From f05a9531508822f5dfb51105334444b53fe11b3e Mon Sep 17 00:00:00 2001 From: Frans Bongers Date: Sat, 30 Nov 2024 22:18:21 +0100 Subject: ui setup bonuses and medaillons --- types.d.ts | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 types.d.ts (limited to 'types.d.ts') diff --git a/types.d.ts b/types.d.ts new file mode 100644 index 0000000..4ba17f7 --- /dev/null +++ b/types.d.ts @@ -0,0 +1,95 @@ +declare const brand: unique symbol; + +// branded typing +export type Brand = T & { + [brand]: TBrand; +}; + +export type Player = Brand; +export type CardId = Brand; +export type FactionId = Brand; + +export interface Game { + [index: number]: any; + seed: number; + log: string[]; + undo: Game[]; + turn: number; + year: number; + active: Player | null; + state: string | null; + bag_of_glory: Record; + blank_markers: number[][]; + bonuses: number[]; + cards_in_play: Record; + current_events: CardId[]; + engine: EngineNode[]; + fronts: { + a: number; + m: number; + n: number; + s: number; + }; + hands: Record; + hero_points: Record; + initiative: FactionId; + medaillons: Array; + tableaus: Record; + tracks: number[]; + + result?: string; + victory?: string; + + location?: string; + selected?: string; + + state_data: any; + // played_card: CardId + + // turn: Turn +} + +export interface View { + engine: Game['engine']; + log: number | string[]; + active?: string | null; + prompt: string | null; + actions?: any; + victory?: string; + location?: string; + selected?: string; + + selected_card: CardId | null; + bonuses: Game['bonuses']; + current_events: CardId[]; + fronts: Game['fronts']; + hand: CardId[]; + medaillons: Game['medaillons']; + tracks: number[]; +} + +export type States = { + [key: string]: any; +}; + +export type EngineNode = FunctionNode | LeafNode | SeqNode; + +export interface FunctionNode { + t: 'f'; + f: string; // function to be triggered + a?: any; // args + r?: 0 | 1; // 1 if resolved +} + +export interface SeqNode { + t: 's'; // Type + c: EngineNode[]; +} + +export interface LeafNode { + t: 'l'; + s: string; // State + p: FactionId; // Player + a?: any; // args + r?: 0 | 1; // 1 if resolved +} \ No newline at end of file -- cgit v1.2.3