let Entity = require("./entity"); let Aircraft = require("./aircraft"); let Missile = require("./missile"); class EntityMgr { constructor() { this.entityMap = new Map(); } createEntity(sclass, base) { var entity; if (sclass == "飞机") { entity = new Aircraft(base); } else if (sclass == "空空弹") { entity = new Missile(base); } else { entity = new Entity(base); } let uid = entity.getUID(); entity.init(); this.entityMap.set(uid, entity); return uid; } releaseEntity(uid) { this.entityMap.delete(uid); } getEntity(uid) { return this.entityMap.get(uid); } getEntityUID(xh, bh) { for (const [key, value] of this.entityMap) { let uid = key; let entity = value; let base = entity.getBase(); if (base) { if (base["型号"] == xh && base["编号"] == bh) { return uid; } } } } insertAnimaPath(uid, time, point) { let entity = this.entityMap.get(uid); if (entity) { entity.insertAnimaPath(time, point); } } insertUserEvent(uid, t, event) { let entity = this.entityMap.get(uid); if (entity) { entity.insertUserEvent(t, event); } } updateEntity(time, data) { if (this.entityMap.size > 0) { var arrayHJ = []; var arrayEvent = []; for (const [key, value] of this.entityMap) { let entity = value; let base = entity.getBase(); let point = entity.updateAnimaPath(time); if (point.hasOwnProperty('经度')) { point["BDID"] = base["BDID"]; arrayHJ.push(point); } let event = entity.updateUserEvent(time); if (event) { event["BDID"] = base["BDID"]; arrayEvent.push(event); } } data["航迹列表"] = arrayHJ; data["事件列表"] = arrayEvent; } } } module.exports = new EntityMgr();