Implement the 017-combat-conditions feature that adds D&D 5e status conditions to combatants with icon tags, color coding, and a compact toggle picker in the encounter tracker

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Lukas
2026-03-06 11:29:39 +01:00
parent 78c6591973
commit febe892e15
22 changed files with 1301 additions and 62 deletions

View File

@@ -9,8 +9,14 @@ import {
setAcUseCase,
setHpUseCase,
setInitiativeUseCase,
toggleConditionUseCase,
} from "@initiative/application";
import type { CombatantId, DomainEvent, Encounter } from "@initiative/domain";
import type {
CombatantId,
ConditionId,
DomainEvent,
Encounter,
} from "@initiative/domain";
import {
combatantId,
createEncounter,
@@ -185,6 +191,19 @@ export function useEncounter() {
[makeStore],
);
const toggleCondition = useCallback(
(id: CombatantId, conditionId: ConditionId) => {
const result = toggleConditionUseCase(makeStore(), id, conditionId);
if (isDomainError(result)) {
return;
}
setEvents((prev) => [...prev, ...result]);
},
[makeStore],
);
return {
encounter,
events,
@@ -197,5 +216,6 @@ export function useEncounter() {
setHp,
adjustHp,
setAc,
toggleCondition,
} as const;
}