import { lobbyJoin } from "../Classes/Incoming/lobbyJoin.js"; import { levelState } from "../Classes/levelState.js"; import { lobbyMessage } from "../Classes/lobbyMessage.js"; import { characterData } from "../Classes/characterData.js"; import { userData } from "../Classes/userData.js"; import { game } from "../game.js"; import { Socket } from "socket.io"; import { Endpoints } from "../endpoints.js"; export function playerJoin(socket : Socket, data){ let buff = Buffer.from(data, 'base64'); let data1 : lobbyJoin = JSON.parse(buff.toString('utf-8')); let character : characterData = socket.character console.log(character) character.room = "0_0" character.characterId = data1.player.characterId game.lobbyState.addUser(socket) let spawnRoom = game.lobbyState.roomEnter(new levelState("0_0", -1), character) socket.join("0_0") let newUser = { users:[socket.user.makeSafe()], players:[character.copyStart()], rooms:[] }; let existingUsers = { users:game.lobbyState.activeUsers.map(u=> u.user.makeSafe()), players:game.lobbyState.activeUsers.map(p=>p.character.copyStart()), rooms:game.lobbyState.rooms.map(room=>{ if(room == spawnRoom) return spawnRoom.copyStart() else return room.copyState() }) } console.log(spawnRoom) console.log(spawnRoom.copyStart()) console.log(existingUsers) //send only player to all existing players socket.broadcast.emit(Endpoints.PlayerJoin, JSON.stringify(newUser)); //send all users to player (including player) socket.emit(Endpoints.PlayerJoin, JSON.stringify(existingUsers)) game.addMessage(new lobbyMessage(socket.user.login + " joined")) }