You've already forked KF-MMO-Server
Backend refactor, player-user decoupling
This commit is contained in:
@@ -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
16
Classes/loginResponse.ts
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user