boardgame-core/src/samples/regicide/state.ts

39 lines
1.3 KiB
TypeScript
Raw Normal View History

2026-04-10 13:24:29 +08:00
import {createRegion, Region} from "@/core/region";
import {Enemy, GamePhase, PlayerType, RegionType} from "@/samples/regicide/types";
import {RegicideCard} from "@/samples/regicide/types";
import {INITIAL_HAND_SIZE} from "@/samples/regicide/constants";
export function createInitialState() {
const regions: Record<RegionType, Region> = {
enemyDeck: createRegion('enemyDeck', []),
tavernDeck: createRegion('tavernDeck', []),
discardPile: createRegion('discardPile', []),
currentEnemy: createRegion('currentEnemy', []),
hand_player1: createRegion('hand_player1', []),
hand_player2: createRegion('hand_player2', []),
hand_player3: createRegion('hand_player3', []),
hand_player4: createRegion('hand_player4', []),
};
const playerHands: Record<PlayerType, string[]> = {
player1: [],
player2: [],
player3: [],
player4: [],
};
return {
regions,
cards: {} as Record<string, RegicideCard>,
playerHands,
currentPlayerIndex: 0,
playerCount: 1,
currentEnemy: null as Enemy | null,
enemyDeck: [] as Enemy[],
phase: 'playing' as GamePhase,
winner: null as boolean | null,
};
}
export type RegicideState = ReturnType<typeof createInitialState>;