Backend refactor, player-user decoupling

This commit is contained in:
2023-09-16 11:24:44 +02:00
parent ba5f3df01b
commit 870aa12161
11 changed files with 152 additions and 61 deletions

View File

@@ -1,17 +1,49 @@
import { physicsObject } from "../Classes/physicsObject";
import { playerData } from "../Classes/playerData";
import { userData } from "./userData";
export class lobbyState{
hostSocket : string
hostId : number
users : userData[] = [];
players : playerData[] = [];
objects : physicsObject[] = [];
copyLight(){
let lobby = Object.assign({}, this);
lobby.players = []
lobby.users = []
for (let i = 0; i < this.players.length; i++) {
lobby.players.push(playerData.copyLight(this.players[i]));
}
return lobby
}
addUser(userData, playerData){
let uIdx = this.users.findIndex(u=>u.id == userData.id)
let pIdx = this.players.findIndex(u=>u.id == playerData.id)
if(uIdx != -1 || pIdx != -1){
console.log("User " + userData.login + " is already in the game!")
return false;
}
this.users.push(userData)
this.players.push(playerData)
return true
}
removeUser(id){
let idx = this.users.findIndex(u=>u.id == id)
if(idx != -1){
this.users.splice(idx, 1)
}
idx = this.players.findIndex(u=>u.id == id)
if(idx != -1){
this.players.splice(idx, 1)
}
}
findPlayer(id: number){
return this.players.find(p=>p.id == id)
}
}

16
Classes/loginResponse.ts Normal file
View File

@@ -0,0 +1,16 @@
import { playerData } from "./playerData"
import { userData } from "./userData"
export class loginResponse{
result : boolean
userData : userData
playerData : playerData
constructor(result : boolean, user : userData, player : playerData){
this.result = result;
if(result){
this.userData = userData.makeSafe(user);
this.playerData = player;
}
}
}

View File

@@ -2,17 +2,15 @@ import { physicsObject } from "./physicsObject";
import { playerInventory } from "./playerInventory";
export class playerData{
socketId : string
userName : string
id : number
characterId : number
inventory : playerInventory = new playerInventory()
rigidbody : physicsObject = new physicsObject()
static copyLight(data : playerData){
let player : any = Object.assign({}, data);
delete player.userName
delete player.characterId
delete player.inventory
let player : any = {}
player.id = data.id
player.rigidbody = data.rigidbody
return player
}
}

View File

@@ -6,7 +6,6 @@ export class userData{
checksum: number;
login: string;
password: string;
playerData: playerData = null
constructor(id:number, login:string, password:string){
this.id = id;
@@ -15,9 +14,8 @@ export class userData{
this.checksum = 0;
}
static makeSafe(user : userData, socketId : string){
static makeSafe(user : userData){
let safeUser : any = Object.assign({}, user);
safeUser.socketId = socketId
delete safeUser.password
delete safeUser.checksum
return safeUser