Files
initiative/packages/domain/src/clear-encounter.ts

34 lines
699 B
TypeScript

import type { DomainEvent } from "./events.js";
import type { DomainError, Encounter } from "./types.js";
export interface ClearEncounterSuccess {
readonly encounter: Encounter;
readonly events: DomainEvent[];
}
export function clearEncounter(
encounter: Encounter,
): ClearEncounterSuccess | DomainError {
if (encounter.combatants.length === 0) {
return {
kind: "domain-error",
code: "encounter-already-empty",
message: "Cannot clear an encounter that has no combatants",
};
}
return {
encounter: {
combatants: [],
activeIndex: 0,
roundNumber: 1,
},
events: [
{
type: "EncounterCleared",
combatantCount: encounter.combatants.length,
},
],
};
}