KF-MMO-Server/Items/itemSocket.ts

63 lines
2.2 KiB
TypeScript

import { itemData } from "../Classes/itemData";
import { itemGenerated } from "../Classes/itemGenerated";
import { generateItem } from "./itemGeneration";
import { itemRequest } from "../Classes/itemRequest";
import { lobbyMessage } from "../Classes/lobbyMessage";
import { userData } from "../Classes/userData";
import { game } from "../game";
import { playerData } from "../Classes/playerData";
export function registerItemCallbacks(socket){
socket.on('item/pickup', (data) => {
if(!socket.hasOwnProperty("user")) return;
let buff = Buffer.from(data, 'base64');
let data1 : itemData = JSON.parse(buff.toString('utf-8'));
let player : playerData = socket.player
if(player != null){
let message = socket.user.login + " picked up "
if(data1.rarity >= 95){
message += "<color=purple>" + data1.name + "</color> (epic)"
}
else if(data1.rarity >= 75){
message += "<color=red>" + data1.name + "</color> (rare)"
}
else if(data1.rarity >= 60){
message += "<color=yellow>" + data1.name + "</color> (uncommon)"
}
else
message += data1.name;
player.inventory.items.push(data1)
game.addMessage(new lobbyMessage(message))
}
});
socket.on('item/delete', (data) => {
if(!socket.hasOwnProperty("user")) return;
let buff = Buffer.from(data, 'base64');
let data1 = Number(buff.toString('utf-8'));
let player : playerData = socket.user.playerData
let item = player.inventory.items.findIndex(i=>i.id == data1);
if(item == -1){
console.log("Error! Item " + item + " not found!")
}
player.inventory.items.splice(item, 1)
});
socket.on('item/request', (data) => {
if(!socket.hasOwnProperty("user")) return;
let buff = Buffer.from(data, 'base64');
let data1 : itemRequest = JSON.parse(buff.toString('utf-8'));
let response = new itemGenerated()
response.instanceId = data1.instanceId
response.item = generateItem(data1.itemType)
socket.emit("item/generated", JSON.stringify(response))
});
}