KF-MMO-Server/Lobby/_playerJoin.ts

46 lines
1.6 KiB
TypeScript
Raw Permalink Normal View History

2023-11-02 02:46:59 +08:00
import { lobbyJoin } from "../Classes/Incoming/lobbyJoin";
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){
2023-11-02 02:46:59 +08:00
if(!socket.hasOwnProperty("player")) return;
2023-10-10 04:15:28 +08:00
let buff = Buffer.from(data, 'base64');
2023-11-02 02:46:59 +08:00
let data1 : lobbyJoin = JSON.parse(buff.toString('utf-8'));
let player : playerData = socket.player
2023-11-01 10:01:57 +08:00
2023-11-02 02:46:59 +08:00
player.room = "0_0"
player.characterId = data1.player.characterId
game.lobbyState.addUser(socket.user, player)
let spawnRoom = game.lobbyState.roomEnter(new levelState("0_0", -1), player)
2023-11-01 10:01:57 +08:00
socket.join("0_0")
2023-11-02 02:46:59 +08:00
let newUser = {
users:[userData.makeSafe(socket.user)],
players:[player.copyStart()],
rooms:[]
};
let existingUsers = {
users:game.lobbyState.users.map(u=> userData.makeSafe(u)),
players:game.lobbyState.players.map(p=>p.copyStart()),
rooms:[]
}
game.lobbyState.rooms.forEach(room=>{
if(room == spawnRoom)
existingUsers.rooms.push(spawnRoom.copyStart())
else
existingUsers.rooms.push(room.copyState())
})
2023-11-01 10:01:57 +08:00
//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"))
}