Initial commit
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
const DoubleLinkedList = require("../Utility/DoubleLinkedList");
|
||||
|
||||
class EntityGroup {
|
||||
constructor(info) {
|
||||
this.id = info.id;
|
||||
this.mapIDs = Array.isArray(info.mapIDs) ? info.mapIDs : [];
|
||||
this.structure = info.structure;
|
||||
this.entitySettings = info.entitySettings;
|
||||
this.members = new DoubleLinkedList();
|
||||
this.leaders = new DoubleLinkedList();
|
||||
this.isSummonPossible = true;
|
||||
this.predefinedArea = info.predefinedArea ? info.predefinedArea : {
|
||||
x: 1000,
|
||||
y: 1000,
|
||||
width: 750,
|
||||
height: 750
|
||||
};
|
||||
};
|
||||
|
||||
setAreaPosition(position) {
|
||||
this.predefinedArea.x = position.x;
|
||||
this.predefinedArea.y = position.y;
|
||||
}
|
||||
|
||||
getEntitySetting(groupMemberTypeID) {
|
||||
const entitySetting = this.entitySettings[groupMemberTypeID];
|
||||
|
||||
return entitySetting ? entitySetting : {
|
||||
speed: 600,
|
||||
respawnTime: 0
|
||||
};
|
||||
}
|
||||
|
||||
cancelRespawn() {
|
||||
if (!this.isSummonPossible) return;
|
||||
|
||||
this.members.each((key, value) => {
|
||||
value.cancelEvent(8);
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
this.isSummonPossible = false;
|
||||
}
|
||||
|
||||
default() {
|
||||
this.members.clearEach(() => null);
|
||||
this.leaders.clearEach(() => null);
|
||||
|
||||
this.isSummonPossible = true;
|
||||
}
|
||||
|
||||
isDefeated() {
|
||||
let deadEntitiesCount = 0;
|
||||
|
||||
this.members.each((key, value) => {
|
||||
if (!value.isAlive) deadEntitiesCount++;
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
this.leaders.each((key, value) => {
|
||||
if (!value.isAlive) deadEntitiesCount++;
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
return this.structure.length === deadEntitiesCount || (this.members.isEmpty() && this.leaders.isEmpty());
|
||||
}
|
||||
|
||||
addMember(entity) {
|
||||
this.members.addItem(entity.id, entity);
|
||||
}
|
||||
|
||||
addLeader(entity) {
|
||||
this.leaders.addItem(entity.id, entity);
|
||||
}
|
||||
|
||||
isLeader(id) {
|
||||
return this.leaders.hasElement(id);
|
||||
}
|
||||
|
||||
isLeaderAlive() {
|
||||
let isAlive = false;
|
||||
|
||||
this.leaders.each(function (key, value) {
|
||||
isAlive = value.isAlive;
|
||||
|
||||
return !value.isAlive;
|
||||
});
|
||||
|
||||
return isAlive;
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = EntityGroup;
|
||||
Reference in New Issue
Block a user