Skip to main content

State Management

Game state is managed with Zustand. The main state store is defined in the game-status.ts file.

Main State Fields

interface IGameState {
// Game state
currentTurnPlayerId: string;
winnerId: string | undefined;
isTie: boolean;

// Players
playerList: Player[];
currentPlayer: Player | null;
localSeat: PlayerIndex;

// Tiles
playerHand: ITile[];
tilePool: number;

// Okey
okeyIndicator: ITile | undefined;
okeyTile: ITile | undefined;

// Score
scoreBoard: Record<string, number>;

// Melds
openSeriesBySeat: MeldsBySeat;

// Play Again
playAgainRequestingPlayer: Player | null;

// UI state
undoFromDiscardButtonEnabled: boolean;
// ... more
}