This repository has been archived on 2026-05-04. You can view files and clone it, but cannot push or open issues or pull requests.
Galaxy-Strike-Online/game-server/src/sockets/handlers/inventoryHandler.js
2026-04-03 23:14:28 +03:00

48 lines
1.5 KiB
JavaScript

const inventoryManager = require("../../game/InventoryManager");
const sessionManager = require("../../game/SessionManager");
module.exports = (io, socket) => {
const userId = socket.user?.id;
if (!userId) return;
socket.on("player:get_inventory", async () => {
const items = await inventoryManager.getInventory(userId);
socket.emit("player:inventory_data", items);
});
socket.on("player:get_equipment", async () => {
const equipment = await inventoryManager.getEquipment(userId);
socket.emit("player:equipment_data", equipment);
});
socket.on("player:equip_item", async ({ itemId, slot }) => {
try {
const itemInfo = await inventoryManager.equipItem(userId, itemId, slot);
sessionManager.updateEquipment(socket.id, slot, itemId);
socket.emit("player:item_equipped", { slot, itemId });
socket.broadcast.emit("player:visible_changed", {
playerId: userId,
slot,
texturePath: itemInfo.texture,
});
} catch (err) {
socket.emit("error", { message: err.message });
}
});
socket.on("player:unequip_item", async ({ slot }) => {
try {
await inventoryManager.unequipItem(userId, slot);
sessionManager.updateEquipment(socket.id, slot, null);
socket.emit("player:item_unequipped", { slot });
socket.broadcast.emit("player:visible_changed", {
playerId: userId,
slot,
texturePath: null,
});
} catch (err) {
socket.emit("error", { message: "UNEQUIP_FAILED" });
}
});
};