bmh_admin/controller/entityMgr.js
2025-03-20 14:16:14 +08:00

85 lines
2.2 KiB
JavaScript

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