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({ 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) { 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; } } 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; }