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,21 +1,24 @@
import { game } from "../game";
import { loginResponse } from "../Classes/loginResponse";
import { playerData } from "../Classes/playerData";
import { userData } from "../Classes/userData";
import { users } from "./users";
import { players } from "../Player/players";
export function registerAccountCallbacks(socket){
function emitLogin(result : userData, registered:boolean = false){
if(result != null){
socket.emit("account/login", JSON.stringify(userData.makeSafe(result, socket.id)));
socket.user = result
function emitLogin(user : userData, player:playerData, registered:boolean = false){
if(user != null){
socket.emit("account/login", JSON.stringify(new loginResponse(true, user, player)));
socket.user = user
socket.player = player
if(registered){
console.log(`User ${(result as userData).login} registerd and logged in`);
console.log(`User ${(user as userData).login} registerd and logged in`);
}
else{
console.log(`User ${(result as userData).login} logged in`);
console.log(`User ${(user as userData).login} logged in`);
}
}
else{
socket.emit("account/login", "");
socket.emit("account/login", JSON.stringify(new loginResponse(false, null, null)));
console.log("Login Failed");
}
}
@@ -24,17 +27,27 @@ export function registerAccountCallbacks(socket){
let buff = Buffer.from(data, 'base64');
let json : userData = JSON.parse(buff.toString('utf-8'));
if (!json.login || !json.password) return
let result = users.createUser(json.login, json.password);
emitLogin(result, true);
let result = users.createUser(json.login, json.password);
let player = null
if(result != null){
player = players.createPlayer(result.id)
}
emitLogin(result, player);
});
socket.on('account/login', (data) => {
let buff = Buffer.from(data, 'base64');
let json : userData = JSON.parse(buff.toString('utf-8'));
if (!json.login || !json.password) return
let result = users.readUser(json.login, json.password);
emitLogin(result);
let result = users.readUser(json.login, json.password);
let player = null
if(result != null){
player = players.readPlayer(result.id)
}
emitLogin(result, player);
});
}

View File

@@ -45,20 +45,13 @@ export class users{
}
static loadUsers(){
let maxItemId = 0;
fs.mkdirSync(`Database/Users/`, { recursive: true })
fs.readdir(`Database/Users/`, (err, files) => {
files.forEach(file => {
fs.readFile(`Database/Users/${file}`, (err, data) => {
if (err) throw err;
let user = JSON.parse(data);
let user : userData = JSON.parse(data);
game.accountsDB.push(user);
if(user.playerData != null){
user.playerData.inventory.items.forEach(i=>{
if(i.id > maxItemId){
game.itemCount = maxItemId = i.id
}
})
}
console.log(`Loaded ${user.login}`);
});
});