117 lines
2.7 KiB
TypeScript
117 lines
2.7 KiB
TypeScript
import type { ConditionId } from "./conditions.js";
|
|
import type { CombatantId } from "./types.js";
|
|
|
|
export interface TurnAdvanced {
|
|
readonly type: "TurnAdvanced";
|
|
readonly previousCombatantId: CombatantId;
|
|
readonly newCombatantId: CombatantId;
|
|
readonly roundNumber: number;
|
|
}
|
|
|
|
export interface RoundAdvanced {
|
|
readonly type: "RoundAdvanced";
|
|
readonly newRoundNumber: number;
|
|
}
|
|
|
|
export interface CombatantAdded {
|
|
readonly type: "CombatantAdded";
|
|
readonly combatantId: CombatantId;
|
|
readonly name: string;
|
|
readonly position: number;
|
|
}
|
|
|
|
export interface CombatantRemoved {
|
|
readonly type: "CombatantRemoved";
|
|
readonly combatantId: CombatantId;
|
|
readonly name: string;
|
|
}
|
|
|
|
export interface CombatantUpdated {
|
|
readonly type: "CombatantUpdated";
|
|
readonly combatantId: CombatantId;
|
|
readonly oldName: string;
|
|
readonly newName: string;
|
|
}
|
|
|
|
export interface InitiativeSet {
|
|
readonly type: "InitiativeSet";
|
|
readonly combatantId: CombatantId;
|
|
readonly previousValue: number | undefined;
|
|
readonly newValue: number | undefined;
|
|
}
|
|
|
|
export interface MaxHpSet {
|
|
readonly type: "MaxHpSet";
|
|
readonly combatantId: CombatantId;
|
|
readonly previousMaxHp: number | undefined;
|
|
readonly newMaxHp: number | undefined;
|
|
readonly previousCurrentHp: number | undefined;
|
|
readonly newCurrentHp: number | undefined;
|
|
}
|
|
|
|
export interface CurrentHpAdjusted {
|
|
readonly type: "CurrentHpAdjusted";
|
|
readonly combatantId: CombatantId;
|
|
readonly previousHp: number;
|
|
readonly newHp: number;
|
|
readonly delta: number;
|
|
}
|
|
|
|
export interface TurnRetreated {
|
|
readonly type: "TurnRetreated";
|
|
readonly previousCombatantId: CombatantId;
|
|
readonly newCombatantId: CombatantId;
|
|
readonly roundNumber: number;
|
|
}
|
|
|
|
export interface RoundRetreated {
|
|
readonly type: "RoundRetreated";
|
|
readonly newRoundNumber: number;
|
|
}
|
|
|
|
export interface AcSet {
|
|
readonly type: "AcSet";
|
|
readonly combatantId: CombatantId;
|
|
readonly previousAc: number | undefined;
|
|
readonly newAc: number | undefined;
|
|
}
|
|
|
|
export interface ConditionAdded {
|
|
readonly type: "ConditionAdded";
|
|
readonly combatantId: CombatantId;
|
|
readonly condition: ConditionId;
|
|
}
|
|
|
|
export interface ConditionRemoved {
|
|
readonly type: "ConditionRemoved";
|
|
readonly combatantId: CombatantId;
|
|
readonly condition: ConditionId;
|
|
}
|
|
|
|
export interface ConcentrationStarted {
|
|
readonly type: "ConcentrationStarted";
|
|
readonly combatantId: CombatantId;
|
|
}
|
|
|
|
export interface ConcentrationEnded {
|
|
readonly type: "ConcentrationEnded";
|
|
readonly combatantId: CombatantId;
|
|
}
|
|
|
|
export type DomainEvent =
|
|
| TurnAdvanced
|
|
| RoundAdvanced
|
|
| CombatantAdded
|
|
| CombatantRemoved
|
|
| CombatantUpdated
|
|
| InitiativeSet
|
|
| MaxHpSet
|
|
| CurrentHpAdjusted
|
|
| TurnRetreated
|
|
| RoundRetreated
|
|
| AcSet
|
|
| ConditionAdded
|
|
| ConditionRemoved
|
|
| ConcentrationStarted
|
|
| ConcentrationEnded;
|