fix: hotgroup button updated when unit dies

This commit is contained in:
Davide Passoni 2024-12-20 16:21:35 +01:00
parent 5797b9d209
commit c9c34f013f
2 changed files with 10 additions and 4 deletions

View File

@ -7,10 +7,8 @@ import { Unit } from "../../unit/unit";
export function HotGroupBar(props: {}) {
const [hotgroups, setHotgroups] = useState({} as { [key: number]: Unit[] });
const [appState, setAppState] = useState(OlympusState.NOT_INITIALIZED);
useEffect(() => {
AppStateChangedEvent.on((state, subState) => setAppState(state));
HotgroupsChangedEvent.on((hotgroups) => setHotgroups({ ...hotgroups }));
}, []);
@ -38,7 +36,7 @@ export function HotGroupBar(props: {}) {
<span
className={`text-white`}
>
{units.length}
{units.filter((unit) => unit.getAlive()).length}
</span>
</OlStateButton>
</div>

View File

@ -32,6 +32,7 @@ import {
SelectedUnitsChangedEvent,
SelectionClearedEvent,
SessionDataLoadedEvent,
UnitDeadEvent,
UnitDeselectedEvent,
UnitSelectedEvent,
UnitsRefreshed,
@ -74,6 +75,10 @@ export class UnitsManager {
UnitSelectedEvent.on((unit) => this.#onUnitSelection(unit));
UnitDeselectedEvent.on((unit) => this.#onUnitDeselection(unit));
UnitDeadEvent.on((unit) => {
if (unit.getHotgroup()) HotgroupsChangedEvent.dispatch(this.getHotgroups());
});
SessionDataLoadedEvent.on((sessionData) => {
UnitsRefreshed.on(() => {
const localSessionData = deepCopyTable(sessionData);
@ -1154,7 +1159,10 @@ export class UnitsManager {
if (units === null) units = this.getSelectedUnits();
units.forEach((unit: Unit) => unit.setHotgroup(hotgroup));
this.#showActionMessage(units, `added to hotgroup ${hotgroup}`);
HotgroupsChangedEvent.dispatch(this.getHotgroups());
}
getHotgroups() {
let hotgroups: { [key: number]: Unit[] } = {};
for (let ID in this.#units) {
const unit = this.#units[ID];
@ -1167,7 +1175,7 @@ export class UnitsManager {
}
}
}
HotgroupsChangedEvent.dispatch(hotgroups);
return hotgroups;
}
/** Delete the selected units