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

108 lines
2.9 KiB
TypeScript

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';
import { UmUtil } from '../../../cc-common/cc-util/UmUtil';
import { GameDefine } from '../config/GameDefine';
const { ccclass, property } = _decorator;
@ccclass('MapDataConfig')
export class MapDataConfig extends Component {
@property(JsonAsset) mapSagaDataAsset: JsonAsset = null!;
no_key = "no";
totalRow = 18;
// public sagaWaveInfo: SagaInfo[] = [{ id: 0, start: 1, end: 20 }, { id: 1, start: 21, end: 40 }, { id: 2, start: 41, end: 60 }, { id: 3, start: 61, end: 80 }];
protected onLoad(): void {
}
loadMapByName(mapName: string = "F1", callback) {
if (GameDefine.MAP_F_DEBUG.length > 0)
mapName = GameDefine.MAP_F_DEBUG;
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);
var column = Number(UmUtil.removeAllNonDigit(key));
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;
}
public getMapSagaInfoByNoId(noId: number): MapSagaInfo {
var result: MapSagaInfo[];
result = JSON.parse(JSON.stringify(this.mapSagaDataAsset.json));
return result[noId - 1];
}
}
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;
}
export interface MapSagaInfo {
no: number
map: number;
start_level: number;
end_level: number
}