import { levelState } from "../Classes/levelState"; import { lobbyMessage } from "../Classes/lobbyMessage"; import { playerData } from "../Classes/playerData"; import { userData } from "../Classes/userData"; import { game } from "../game"; export function playerJoin(socket, data){ if(!socket.hasOwnProperty("user")) return; let buff = Buffer.from(data, 'base64'); let data1 : playerData = JSON.parse(buff.toString('utf-8')); socket.player.characterId = data1.characterId game.lobbyState.addUser(socket.user, socket.player) let newUser = {users:[userData.makeSafe(socket.user)], players:[socket.player], rooms:[]}; let existingUsers = {users:game.lobbyState.users.map(u=> userData.makeSafe(u)), players:[], rooms:[]} game.lobbyState.players.forEach(player=>{ if(player.id == socket.player.id){ existingUsers.players.push(player) } else{ let newPlayer = Object.assign({}, player); delete(newPlayer.inventory) existingUsers.players.push(newPlayer) } }) let room = game.lobbyState.roomEnter(new levelState("0_0", -1), socket.player) existingUsers.rooms = game.lobbyState.rooms socket.join("0_0") //send only player to all existing players socket.broadcast.emit("lobby/playerJoin", JSON.stringify(newUser)); //send all users to player (including player) socket.emit("lobby/playerJoin", JSON.stringify(existingUsers)) game.addMessage(new lobbyMessage(socket.user.login + " joined")) }