super-hero/assets/cc-game/scripts/game_data/MapDataConfig.ts

98 lines
2.5 KiB
TypeScript
Raw Normal View History

2024-05-20 00:03:32 -07:00
import { JsonAsset } from 'cc';
import { _decorator, Component, Node } from 'cc';
import { UmLog } from '../../../cc-common/cc-util/UmLog';
import { resources } from 'cc';
import { error } from 'cc';
2024-05-29 19:24:12 -07:00
import { UmUtil } from '../../../cc-common/cc-util/UmUtil';
import { GameDefine } from '../config/GameDefine';
2024-05-20 00:03:32 -07:00
const { ccclass, property } = _decorator;
@ccclass('MapDataConfig')
export class MapDataConfig extends Component {
@property({ group: { name: "F1" }, type: JsonAsset }) f1: JsonAsset = null!;
no_key = "no";
column_key = "c";
row_key = "r";
totalRow = 18;
protected onLoad(): void {
}
loadMapByName(mapName: string = "F1", callback) {
2024-05-29 19:24:12 -07:00
if (GameDefine.MAP_F_DEBUG.length > 0)
mapName = GameDefine.MAP_F_DEBUG;
2024-05-20 00:03:32 -07:00
var path = `map_json/${mapName}`;
resources.load(path, JsonAsset, (err: any, jsonAsset) => {
if (err || err?.length > 0)
callback?.(null);
else
callback?.(this.loadMap(jsonAsset));
});
}
loadMap(jsonAsset: JsonAsset): ObjectConfigPoint[] {
var mapConfigPoints: ObjectConfigPoint[] = new Array();
this.totalRow = jsonAsset.json.length;
for (let i = 0; i < this.totalRow; i++) {
var dataConfig = jsonAsset.json[i];
var keys = Object.keys(dataConfig);
for (var key of keys)
{
// UmLog.log("loadMap => ", i, " | key = ", key);
2024-05-29 19:24:12 -07:00
var column = Number(UmUtil.removeAllNonDigit(key));
2024-05-20 00:03:32 -07:00
if (Number.isNaN(column) || key.toLowerCase() == this.no_key)
continue;
// UmLog.log("convert result => ", column, i, dataConfig[key]);
var objectPoint: ObjectConfigPoint = {
objectNo: dataConfig[key],
column: column,
row: i
};
mapConfigPoints.push(objectPoint);
}
}
// UmLog.log("loadMap => DONE | ", mapConfigPoints.length);
return mapConfigPoints;
}
}
export interface MapConfigInfo {
no: string;
c0: number;
c1: number;
c2: number;
c3: number;
c4: number;
c5: number;
c6: number;
c7: number;
c8: number;
c9: number;
c10: number;
c11: number;
c12: number;
c13: number;
c14: number;
c15: number;
c16: number;
c17: number;
}
export interface ObjectConfigPoint {
objectNo: number
column: number;
row: number;
}