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) {
this.sessions.set(socketId, {
id: playerRaw.id,
nickname: playerRaw.username,
username: playerRaw.username,
level: playerRaw.level,
energy: playerRaw.energy,
maxEnergy: playerRaw.maxEnergy,

View File

@ -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);