50 lines
1.7 KiB
TypeScript
50 lines
1.7 KiB
TypeScript
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"))
|
|
} |