Implement the 003-remove-combatant feature that adds the possibility to remove a combatant from an encounter
This commit is contained in:
@@ -2,8 +2,9 @@ import type { EncounterStore } from "@initiative/application";
|
||||
import {
|
||||
addCombatantUseCase,
|
||||
advanceTurnUseCase,
|
||||
removeCombatantUseCase,
|
||||
} from "@initiative/application";
|
||||
import type { DomainEvent, Encounter } from "@initiative/domain";
|
||||
import type { CombatantId, DomainEvent, Encounter } from "@initiative/domain";
|
||||
import {
|
||||
combatantId,
|
||||
createEncounter,
|
||||
@@ -64,5 +65,24 @@ export function useEncounter() {
|
||||
[makeStore],
|
||||
);
|
||||
|
||||
return { encounter, events, advanceTurn, addCombatant } as const;
|
||||
const removeCombatant = useCallback(
|
||||
(id: CombatantId) => {
|
||||
const result = removeCombatantUseCase(makeStore(), id);
|
||||
|
||||
if (isDomainError(result)) {
|
||||
return;
|
||||
}
|
||||
|
||||
setEvents((prev) => [...prev, ...result]);
|
||||
},
|
||||
[makeStore],
|
||||
);
|
||||
|
||||
return {
|
||||
encounter,
|
||||
events,
|
||||
advanceTurn,
|
||||
addCombatant,
|
||||
removeCombatant,
|
||||
} as const;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user