player manager, console update

This commit is contained in:
MaksSlyzar 2026-03-29 10:27:39 +03:00
parent b242d7a095
commit 57a7accdd7
2 changed files with 21 additions and 5 deletions

View File

@ -6,7 +6,7 @@ class SessionManager {
addPlayer(socketId, playerRaw) { addPlayer(socketId, playerRaw) {
this.sessions.set(socketId, { this.sessions.set(socketId, {
id: playerRaw.id, id: playerRaw.id,
nickname: playerRaw.username, username: playerRaw.username,
level: playerRaw.level, level: playerRaw.level,
energy: playerRaw.energy, energy: playerRaw.energy,
maxEnergy: playerRaw.maxEnergy, maxEnergy: playerRaw.maxEnergy,

View File

@ -1,3 +1,4 @@
const { Op } = require("sequelize");
const Player = require("../../models/Player"); const Player = require("../../models/Player");
const sessionManager = require("../../game/SessionManager"); const sessionManager = require("../../game/SessionManager");
const economyService = require("../../game/EconomyService.js"); const economyService = require("../../game/EconomyService.js");
@ -8,7 +9,6 @@ module.exports = async (io, socket) => {
const sid = socket.id.substring(0, 5); const sid = socket.id.substring(0, 5);
if (!userId) { if (!userId) {
console.log(`⚠️ [${sid}] Anonymous connection rejected`);
return socket.disconnect(); return socket.disconnect();
} }
@ -21,7 +21,6 @@ module.exports = async (io, socket) => {
id: userId, id: userId,
username: username, username: username,
}); });
console.log(`🆕 [${sid}] New player registered: ${username}`);
} catch (createErr) { } catch (createErr) {
player = await Player.findByPk(userId); player = await Player.findByPk(userId);
} }
@ -35,6 +34,20 @@ module.exports = async (io, socket) => {
const playerRaw = player.get({ plain: true }); const playerRaw = player.get({ plain: true });
sessionManager.addPlayer(socket.id, playerRaw); 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", { socket.emit("session:ready", {
player: { player: {
@ -45,10 +58,12 @@ module.exports = async (io, socket) => {
experience: playerRaw.experience, experience: playerRaw.experience,
}, },
offlineEarned: offlineCredits, offlineEarned: offlineCredits,
onlineCount: sessionManager.getAllOnline().length, onlinePlayers: onlineUsernames,
offlinePlayers: offlineUsernames,
}); });
socket.broadcast.emit("player:joined", { username: playerRaw.username }); socket.broadcast.emit("player:joined", { username: playerRaw.username });
socket.on("player:get_dashboard", async () => { socket.on("player:get_dashboard", async () => {
try { try {
const p = await Player.findByPk(userId); const p = await Player.findByPk(userId);
@ -57,6 +72,7 @@ module.exports = async (io, socket) => {
console.error(`❌ [${sid}] Dashboard error:`, err.message); console.error(`❌ [${sid}] Dashboard error:`, err.message);
} }
}); });
socket.on("disconnect", async () => { socket.on("disconnect", async () => {
try { try {
await Player.update( await Player.update(
@ -67,7 +83,7 @@ module.exports = async (io, socket) => {
economyService.removePlayer(userId); economyService.removePlayer(userId);
sessionManager.removePlayer(socket.id); sessionManager.removePlayer(socket.id);
console.log(`🔌 [${sid}] Player disconnected: ${userId}`); socket.broadcast.emit("player:left", { username: playerRaw.username });
}); });
} catch (err) { } catch (err) {
console.error(`❌ [${sid}] Connection Error:`, err.message); console.error(`❌ [${sid}] Connection Error:`, err.message);