diff --git a/game-server/src/game/SessionManager.js b/game-server/src/game/SessionManager.js index b845081..cd938ee 100644 --- a/game-server/src/game/SessionManager.js +++ b/game-server/src/game/SessionManager.js @@ -6,7 +6,7 @@ class SessionManager { addPlayer(socketId, playerRaw) { this.sessions.set(socketId, { id: playerRaw.id, - nickname: playerRaw.username, + username: playerRaw.username, level: playerRaw.level, energy: playerRaw.energy, maxEnergy: playerRaw.maxEnergy, diff --git a/game-server/src/sockets/handlers/connectionHandler.js b/game-server/src/sockets/handlers/connectionHandler.js index 42a1a68..e103c08 100644 --- a/game-server/src/sockets/handlers/connectionHandler.js +++ b/game-server/src/sockets/handlers/connectionHandler.js @@ -1,3 +1,4 @@ +const { Op } = require("sequelize"); const Player = require("../../models/Player"); const sessionManager = require("../../game/SessionManager"); const economyService = require("../../game/EconomyService.js"); @@ -8,7 +9,6 @@ module.exports = async (io, socket) => { const sid = socket.id.substring(0, 5); if (!userId) { - console.log(`⚠️ [${sid}] Anonymous connection rejected`); return socket.disconnect(); } @@ -21,7 +21,6 @@ module.exports = async (io, socket) => { id: userId, username: username, }); - console.log(`🆕 [${sid}] New player registered: ${username}`); } catch (createErr) { player = await Player.findByPk(userId); } @@ -35,6 +34,20 @@ module.exports = async (io, socket) => { const playerRaw = player.get({ plain: true }); sessionManager.addPlayer(socket.id, playerRaw); + const onlinePlayersData = sessionManager.getAllOnline(); + const onlineUsernames = onlinePlayersData.map((p) => p.username); + + const onlineIds = onlinePlayersData.map((p) => p.id); + + const offlinePlayersModels = await Player.findAll({ + where: { + id: { [Op.notIn]: onlineIds }, + }, + attributes: ["username"], + raw: true, + }); + + const offlineUsernames = offlinePlayersModels.map((p) => p.username); socket.emit("session:ready", { player: { @@ -45,10 +58,12 @@ module.exports = async (io, socket) => { experience: playerRaw.experience, }, offlineEarned: offlineCredits, - onlineCount: sessionManager.getAllOnline().length, + onlinePlayers: onlineUsernames, + offlinePlayers: offlineUsernames, }); socket.broadcast.emit("player:joined", { username: playerRaw.username }); + socket.on("player:get_dashboard", async () => { try { const p = await Player.findByPk(userId); @@ -57,6 +72,7 @@ module.exports = async (io, socket) => { console.error(`❌ [${sid}] Dashboard error:`, err.message); } }); + socket.on("disconnect", async () => { try { await Player.update( @@ -67,7 +83,7 @@ module.exports = async (io, socket) => { economyService.removePlayer(userId); sessionManager.removePlayer(socket.id); - console.log(`🔌 [${sid}] Player disconnected: ${userId}`); + socket.broadcast.emit("player:left", { username: playerRaw.username }); }); } catch (err) { console.error(`❌ [${sid}] Connection Error:`, err.message);