import {createMiddlewareChain} from "../utils/middleware"; import {CombatGameContext} from "./types"; export type Triggers = { onTurnStart: { entityKey: "player" | string, }, onTurnEnd: { entityKey: "player" | string, }, onShuffle: { entityKey: "player" | string, }, onCardPlayed: { cardId: string, }, onCardDiscarded: { cardId: string, }, onCardDrawn: { cardId: string, }, onEffectApplied: { effectId: string, entityKey: "player" | string, stacks: number, }, } export function createTriggers(){ return { onTurnStart: createTrigger("onTurnStart"), onTurnEnd: createTrigger("onTurnEnd"), onShuffle: createTrigger("onShuffle"), onCardPlayed: createTrigger("onCardPlayed"), onCardDiscarded: createTrigger("onCardDiscarded"), onCardDrawn: createTrigger("onCardDrawn"), onEffectApplied: createTrigger("onEffectApplied"), } } export function createTrigger(event: TKey) { type Ctx = Triggers[TKey] & { event: TKey, game: CombatGameContext }; return createMiddlewareChain(); }