2023-11-01 10:01:57 +08:00
|
|
|
import { levelState } from "../Classes/levelState";
|
2023-10-10 04:15:28 +08:00
|
|
|
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)
|
|
|
|
|
2023-11-01 10:01:57 +08:00
|
|
|
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))
|
2023-10-10 04:15:28 +08:00
|
|
|
|
|
|
|
game.addMessage(new lobbyMessage(socket.user.login + " joined"))
|
|
|
|
}
|