Dungeon mode

This commit is contained in:
2023-11-01 03:01:57 +01:00
parent d729c8dcbb
commit 6dc6bc5db8
16 changed files with 322 additions and 66 deletions

11
Lobby/_clearRoom.ts Normal file
View File

@@ -0,0 +1,11 @@
import { game } from "../game";
export function clearRoom(socket, data){
if(!socket.hasOwnProperty("player")) return;
let buff = Buffer.from(data, 'base64');
let data1 : string = JSON.parse(buff.toString('utf-8'));
let room = game.lobbyState.roomComplete(data1)
game.socketIO.emit("lobby/cleared", JSON.stringify(room))
}

24
Lobby/_enter.ts Normal file
View File

@@ -0,0 +1,24 @@
import { roomChangeData as roomChangeRequest } from "../Classes/roomChangeRequest";
import { roomChangeResponse } from "../Classes/roomChangeResponse";
import { game } from "../game";
export function enter(socket, data){
if(!socket.hasOwnProperty("player")) return;
let buff = Buffer.from(data, 'base64');
let data1 : roomChangeRequest = JSON.parse(buff.toString('utf-8'));
socket.join(data1.targetRoom.id)
let newRoom = game.lobbyState.roomEnter(data1.targetRoom, socket.player)
socket.player.room = newRoom.id
socket.leave(data1.previousRoom)
let oldRoom = game.lobbyState.roomExit(data1.previousRoom, socket.player)
let data2 = new roomChangeResponse()
data2.player = socket.player.copyLight()
data2.newRoom = newRoom.copyLight()
data2.previousRoom = oldRoom.copyLight()
game.socketIO.emit("lobby/entered", JSON.stringify(data2))
}

View File

@@ -1,5 +1,5 @@
import { levelState } from "../Classes/levelState";
import { lobbyMessage } from "../Classes/lobbyMessage";
import { lobbyState } from "../Classes/lobbyState";
import { playerData } from "../Classes/playerData";
import { userData } from "../Classes/userData";
import { game } from "../game";
@@ -13,9 +13,29 @@ export function playerJoin(socket, data){
socket.player.characterId = data1.characterId
game.lobbyState.addUser(socket.user, socket.player)
let newLobbyState : lobbyState = Object.assign({}, game.lobbyState);
newLobbyState.users = newLobbyState.users.map(u=> userData.makeSafe(u))
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))
game.socketIO.emit("lobby/playerJoin", JSON.stringify(newLobbyState))
game.addMessage(new lobbyMessage(socket.user.login + " joined"))
}

View File

@@ -9,10 +9,10 @@ export function playerUpdate(socket, data){
let player : playerData = socket.player
if(player == null){
console.log("Error! Player not spawned!")
return
}
else{
player.room = data1.room
player.rigidbody = data1.rigidbody
player.damageInfo = player.damageInfo.concat(data1.damageInfo)
}
player.room = data1.room
player.rigidbody = data1.rigidbody
player.damageInfo = player.damageInfo.concat(data1.damageInfo)
}

View File

@@ -1,9 +1,19 @@
import { clearRoom } from "./_clearRoom";
import { enter } from "./_enter";
import { loadoutChanged } from "./_loadoutChanged";
import { message } from "./_message";
import { playerJoin } from "./_playerJoin";
import { playerUpdate } from "./_playerUpdate";
export function registerLobbyCallbacks(socket){
socket.on('lobby/enter', (data) => {
enter(socket, data)
});
socket.on('lobby/cleared', (data) => {
clearRoom(socket, data)
});
socket.on('lobby/playerJoin', (data) => {
playerJoin(socket, data)
});