34 lines
699 B
TypeScript
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,
|
|
},
|
|
],
|
|
};
|
|
}
|