KF-MMO-Server/Level/_enter.ts

30 lines
1.0 KiB
TypeScript

import { game } from "../game";
import { playerData } from "../Classes/playerData";
import { roomChangeResponse } from "../Classes/roomChangeResponse";
import { levelEnter } from "../Classes/Incoming/levelEnter";
export function enter(socket, data){
if(!socket.hasOwnProperty("player")) return;
let buff = Buffer.from(data, 'base64');
let data1 : levelEnter = JSON.parse(buff.toString('utf-8'));
let player : playerData = socket.player
socket.join(data1.targetRoom.id)
let newRoom = game.lobbyState.roomEnter(data1.targetRoom, player)
player.room = newRoom.id
socket.leave(data1.previousRoom.id)
let oldRoom = game.lobbyState.roomExit(data1.previousRoom.id, player)
let data2 = new roomChangeResponse()
data2.player = player.copyUpdate()
data2.newRoom = newRoom.copyStart()
data2.previousRoom = oldRoom.copyState()
socket.emit("level/entered", JSON.stringify(data2))
data2.newRoom = newRoom.copyState()
socket.broadcast.emit("level/entered", JSON.stringify(data2))
}