// websockets/state/game.js // Importamos a classe que criaste no Passo 1 const BiscaGame = require('../classes/BiscaGame'); // Aqui guardamos todos os jogos a decorrer na memória RAM do servidor // Chave: ID do jogo (matchId) -> Valor: Instância do Jogo (O objeto com o baralho, mãos, etc) const activeGames = new Map(); /** * Cria um novo jogo, guarda-o na memória e retorna-o. */ const createGame = (id, type, player1, player2) => { // 1. Instanciar a classe (Criar o jogo com as regras) const game = new BiscaGame(id, type, player1, player2); // 2. Preparar o jogo (Baralhar, dar cartas iniciais) game.init(); // 3. Guardar no "Armazém" para não se perder activeGames.set(id, game); console.log(`[Game State] Jogo criado: ${id} (Tipo: ${type})`); return game; }; /** * Busca um jogo existente pelo ID. * Usado sempre que um jogador envia uma carta, para sabermos a qual jogo pertence. */ const getGame = (id) => { return activeGames.get(id); }; /** * Remove o jogo da memória. * Usado quando o jogo acaba para libertar RAM. */ const removeGame = (id) => { activeGames.delete(id); console.log(`[Game State] Jogo removido: ${id}`); }; // Exportamos estas funções para serem usadas no ficheiro de eventos module.exports = { createGame, getGame, removeGame };