39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
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>;
|