2024-10-28 07:53:09 +01:00

48 lines
954 B
TypeScript

import { UnitDeadEvent } from "../events";
import { Unit } from "./unit";
export class Group {
#members: Unit[] = [];
#name: string;
constructor(name: string) {
this.#name = name;
UnitDeadEvent.on((unit) => {
if (this.#members.includes(unit)) this.getLeader()?.onGroupChanged(unit);
});
}
getName() {
return this.#name;
}
addMember(member: Unit) {
if (!this.#members.includes(member)) {
this.#members.push(member);
member.setGroup(this);
this.getLeader()?.onGroupChanged(member);
}
}
removeMember(member: Unit) {
if (this.#members.includes(member)) {
delete this.#members[this.#members.indexOf(member)];
member.setGroup(null);
this.getLeader()?.onGroupChanged(member);
}
}
getMembers() {
return this.#members;
}
getLeader() {
return this.#members.find((unit: Unit) => {
return unit.getIsLeader() && unit.getAlive();
});
}
}