player manager, console update
This commit is contained in:
parent
b242d7a095
commit
57a7accdd7
@ -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,
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user