108 lines
2.4 KiB
TypeScript
108 lines
2.4 KiB
TypeScript
import MapModel from "./MapModel";
|
|
import NpcMgr from "./NpcMgr";
|
|
import BattleObj from "../object/BattleObj";
|
|
import SKDataUtil from "../gear/SKDataUtil";
|
|
import SKLogger from "../gear/SKLogger";
|
|
|
|
export default class MapMgr {
|
|
|
|
static shared = new MapMgr();
|
|
|
|
map_list: any;
|
|
bang_map_list: any;
|
|
home_map_list: any;
|
|
|
|
constructor() {
|
|
this.map_list = [];
|
|
this.bang_map_list = {};
|
|
this.home_map_list = {};
|
|
}
|
|
|
|
addMap(map: MapModel) {
|
|
this.map_list[map.map_id] = map;
|
|
}
|
|
|
|
getBangMap(bangid: any): MapModel {
|
|
if (this.bang_map_list[bangid]) {
|
|
return this.bang_map_list[bangid];
|
|
}
|
|
else {
|
|
let propMap = require('../../conf/prop_data/map_json/3002');
|
|
if (propMap) {
|
|
let pMap = new MapModel();
|
|
pMap.map_id = bangid;
|
|
pMap.map_name = '帮派';
|
|
// 这里扩展map信息
|
|
pMap.setMapData(propMap);
|
|
this.bang_map_list[bangid] = pMap;
|
|
NpcMgr.shared.InitNpcByMapId(3002, bangid);
|
|
return pMap;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
getHomeMap(onlyid: any): any {
|
|
if (this.home_map_list[onlyid]) {
|
|
return this.home_map_list[onlyid];
|
|
}
|
|
else {
|
|
let propMap = require('../../conf/prop_data/map_json/4001');
|
|
if (propMap) {
|
|
let pMap = new MapModel();
|
|
pMap.map_id = onlyid;
|
|
pMap.map_name = '家';
|
|
// 这里扩展map信息
|
|
pMap.setMapData(propMap);
|
|
this.home_map_list[onlyid] = pMap;
|
|
return pMap;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
getMap(obj: BattleObj): MapModel {
|
|
if (obj.mapid == 3002) {
|
|
if (obj.isNpc()) {
|
|
return this.getBangMap(obj.nFuBenID);
|
|
} else {
|
|
return this.getBangMap(obj.bangid);
|
|
}
|
|
} else if (obj.mapid == 4001) {
|
|
if (!obj.isNpc()) {
|
|
return this.getHomeMap(obj.onlyid);
|
|
} else {
|
|
return null;
|
|
}
|
|
} else {
|
|
let result = this.map_list[obj.mapid];
|
|
if (result == null) {
|
|
SKLogger.warn(`[${obj.name}]所在地图[${obj.mapid}]未配置!`);
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
|
|
getMapById(mapId: any): MapModel {
|
|
return this.map_list[mapId];
|
|
}
|
|
|
|
launch() {
|
|
let maplist = require("../../conf/prop_data/prop_map");
|
|
for (let mapid in maplist) {
|
|
if (maplist.hasOwnProperty(mapid)) {
|
|
let mapinfo = maplist[mapid];
|
|
let propMap = require('../../conf/prop_data/map_json/' + mapinfo.mapid);
|
|
if (propMap) {
|
|
let pMap = new MapModel();
|
|
pMap.map_id = mapid;
|
|
pMap.map_name = mapinfo.map_name;
|
|
// 这里扩展map信息
|
|
propMap.anlei = SKDataUtil.jsonBy(mapinfo.anlei);
|
|
pMap.setMapData(propMap);
|
|
this.addMap(pMap);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |