KF-MMO-Server/Level/_enter.ts

29 lines
1.1 KiB
TypeScript

import { game } from "../game.js";
import { characterData } from "../Classes/characterData.js";
import { roomChangeResponse } from "../Classes/Outgoing/roomChangeResponse.js";
import { levelEnter } from "../Classes/Incoming/levelEnter.js";
import { Socket } from "socket.io";
import { Endpoints } from "../endpoints.js";
export function enter(socket : Socket, data){
let buff = Buffer.from(data, 'base64');
let data1 : levelEnter = JSON.parse(buff.toString('utf-8'));
let character : characterData = socket.character
socket.join(data1.targetRoom.id)
let newRoom = game.lobbyState.roomEnter(data1.targetRoom, character)
character.room = newRoom.id
socket.leave(data1.previousRoom.id)
let oldRoom = game.lobbyState.roomExit(data1.previousRoom.id, character)
let data2 = new roomChangeResponse()
data2.player = character.copyUpdate()
data2.newRoom = newRoom.copyStart()
data2.previousRoom = oldRoom.copyState()
let json = JSON.stringify(data2)
socket.emit(Endpoints.LevelEntered, json)
socket.broadcast.emit(Endpoints.LevelEntered, json)
}