SyntaxSquad/DADProject#46 SyntaxSquad/DADProject#47 added sockets for game joining and card play

This commit is contained in:
2025-12-29 11:15:50 +00:00
committed by FernandoJVideira
parent d29e44c61c
commit c4078d9b82
7 changed files with 459 additions and 127 deletions
+7 -9
View File
@@ -1,19 +1,17 @@
const users = new Map();
export const addUser = (socket, user) => {
users.set(socket.id, user);
export const addUser = (socketId, userData) => {
users.set(socketId, userData);
};
export const removeUser = (socketID) => {
const userToDelete = { ...users.get(socketID) };
users.delete(socketID);
return userToDelete;
export const getUser = (socketId) => {
return users.get(socketId);
};
export const getUser = (socketID) => {
return users.get(socketID);
export const removeUser = (socketId) => {
users.delete(socketId);
};
export const getUserCount = () => {
return users.size;
};
};
+14 -34
View File
@@ -1,49 +1,29 @@
// websockets/state/game.js
const BiscaGame = require("../classes/BiscaGame");
// 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();
const game = new BiscaGame(id, type, player1, player2);
// 3. Guardar no "Armazém" para não se perder
activeGames.set(id, game);
game.init();
console.log(`[Game State] Jogo criado: ${id} (Tipo: ${type})`);
return game;
activeGames.set(id, game);
console.log(`[Game State] Game created: ${id} (Type: ${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);
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}`);
activeGames.delete(id);
console.log(`[Game State] Game removed: ${id}`);
};
// Exportamos estas funções para serem usadas no ficheiro de eventos
module.exports = {
createGame,
getGame,
removeGame
};
createGame,
getGame,
removeGame,
};