xy-server/game/core/MapMgr.ts
2025-04-23 09:34:08 +08:00

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