Signed-off-by: ale <ale@manalejandro.com>
Este commit está contenido en:
ale
2025-12-11 02:56:49 +01:00
padre dcd0aecd54
commit f5df98c544
Se han modificado 8 ficheros con 148 adiciones y 12 borrados

Ver fichero

@@ -26,6 +26,7 @@ interface GameStore {
selectTile: (tile: DominoTile | null) => void;
leaveRoom: () => void;
setError: (error: string | null) => void;
requestRematch: () => void;
// AI actions
startAIGame: (playerName: string) => void;
@@ -134,6 +135,18 @@ export const useGameStore = create<GameStore>((set, get) => ({
setTimeout(() => set({ error: null }), 3000);
});
socket.on('rematch-started', (gameState: GameState) => {
set({ gameState, selectedTile: null });
// Check if AI starts
const currentPlayer = gameState.players[gameState.currentPlayerIndex];
if (currentPlayer?.isAI) {
setTimeout(() => {
get().executeAITurn();
}, 1500);
}
});
set({ socket });
},
@@ -246,6 +259,25 @@ export const useGameStore = create<GameStore>((set, get) => ({
});
},
requestRematch: () => {
const { socket, roomId, gameState, currentPlayerId } = get();
// AI mode - start new game immediately
if (roomId?.startsWith('AI-') && gameState && currentPlayerId) {
const humanPlayer = gameState.players.find(p => !p.isAI);
if (humanPlayer) {
// Just restart with same settings
get().startAIGame(humanPlayer.name);
}
return;
}
// Online mode - send rematch request to server
if (socket && roomId) {
socket.emit('request-rematch', roomId);
}
},
setError: (error: string | null) => {
set({ error });
if (error) {
@@ -297,6 +329,7 @@ export const useGameStore = create<GameStore>((set, get) => ({
isGameOver: false,
turnsPassed: 0,
gameMode: 'playing',
rematchRequests: [],
};
set({ gameState, currentPlayerId: 'human', roomId });