85 lines
2.2 KiB
JavaScript
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(); |