Updated inventory management. Improved saving.

This commit is contained in:
katboi01 2024-12-01 18:02:42 +01:00
parent f3a56611c6
commit a17e460f50
8 changed files with 31 additions and 51 deletions

View File

@ -38,10 +38,7 @@ export class users{
} }
static saveUsers(){ static saveUsers(){
game.accountsDB.forEach(user => { game.accountsDB.forEach(user => {user.save(fs)});
let data = JSON.stringify(user, null, 2);
fs.writeFileSync(`Database/Users/${user.id}_${user.login}.json`, data);
});
} }
static loadUsers(){ static loadUsers(){

View File

@ -1,12 +1,7 @@
import { Stat } from "../itemData" import { itemData } from "../itemData"
export class inventoryChange{ export class inventoryChange{
id : number
name : string
rarity : number
change : number
templateId: number
operation : number operation : number
equipment : number[] item : itemData
stats : Stat[] = [] itemSlot : number
} }

View File

@ -21,24 +21,6 @@ export class itemData{
return item return item
} }
static fromChange(change : inventoryChange){
let item = new itemData()
item.id = change.id
item.name = change.name
if(change.hasOwnProperty("stats")){
item.stats = change.stats
}
else{
item.stats = []
}
item.count = change.change
item.rarity = change.rarity
item.templateId = change.templateId
return item
}
static copy(data : itemData){ static copy(data : itemData){
let item = new itemData() let item = new itemData()

View File

@ -54,4 +54,9 @@ export class playerData{
this.inventory.equipment = [-1, -1, -1] this.inventory.equipment = [-1, -1, -1]
} }
} }
save(fs){
let data = JSON.stringify(this, null, 2);
fs.writeFileSync(`Database/Players/${this.id}.json`, data);
}
} }

View File

@ -1,6 +1,3 @@
import { itemData } from "./itemData";
import { playerData } from "./playerData";
export class userData{ export class userData{
id: number; id: number;
checksum: number; checksum: number;
@ -20,4 +17,9 @@ export class userData{
delete safeUser.checksum delete safeUser.checksum
return safeUser return safeUser
} }
save(fs){
let data = JSON.stringify(this, null, 2);
fs.writeFileSync(`Database/Users/${this.id}_${this.login}.json`, data);
}
} }

View File

@ -17,31 +17,25 @@ export function updateInventory(socket, data){
break; break;
case 1: //ItemAdd case 1: //ItemAdd
{ {
let item = itemData.fromChange(change) let item = itemData.copy(change.item)
inventory.items.push(item) inventory.items.push(item)
break; break;
} }
case 2: //ItemAddToStack case 2: //ItemChangeStack
{ {
let itemStack = inventory.items.find(i=>i.id == change.id) let itemStack = inventory.items.find(i=>i.id == change.item.id)
itemStack.count += change.change itemStack.count += change.item.count
break; break;
} }
case 3: //ItemRemove case 3: //ItemRemove
{ {
let itemStack = inventory.items.findIndex(i=>i.id == change.id) let itemStack = inventory.items.findIndex(i=>i.id == change.item.id)
inventory.items.splice(itemStack, 1) inventory.items.splice(itemStack, 1)
break; break;
} }
case 4: //ItemRemoveFromStack case 4: //EquipmentChange
{ {
let itemStack = inventory.items.find(i=>i.id == change.id) inventory.equipment[change.itemSlot] = change.item.id
itemStack.count -= change.change
break;
}
case 5: //EquipmentChange
{
inventory.equipment = change.equipment
break; break;
} }
} }

View File

@ -21,10 +21,7 @@ export class players{
} }
static savePlayers(){ static savePlayers(){
game.playersDB.forEach(player => { game.playersDB.forEach(player => {player.save(fs)});
let data = JSON.stringify(player, null, 2);
fs.writeFileSync(`Database/Players/${player.id}.json`, data);
});
} }
static loadPlayers(){ static loadPlayers(){

View File

@ -41,7 +41,11 @@ io.on('connection', (socket) => {
socket.on("disconnect", () => { socket.on("disconnect", () => {
socket.disconnect() socket.disconnect()
if(socket.hasOwnProperty("player")){
socket.player.save()
}
if(socket.hasOwnProperty("user")){ if(socket.hasOwnProperty("user")){
socket.user.save()
game.lobbyState.removeUser(socket.user.id) game.lobbyState.removeUser(socket.user.id)
delete socket.user delete socket.user
} }
@ -85,13 +89,17 @@ setInterval(() => {
for(let i = 0; i < lobbyState.dungeons.length; i++){ for(let i = 0; i < lobbyState.dungeons.length; i++){
console.log(lobbyState.dungeons[i].entranceId + " " + lobbyState.dungeons[i].playerCount) console.log(lobbyState.dungeons[i].entranceId + " " + lobbyState.dungeons[i].playerCount)
} }
}, 1000) }, 5000)
setInterval(() => { setInterval(() => {
users.saveUsers(); users.saveUsers();
players.savePlayers(); players.savePlayers();
}, 1000 * 60 * 60 * 12) //twice a day }, 1000 * 60 * 60 * 12) //twice a day
process.on('uncaughtException', function (err) {
console.log('Caught exception: ', err);
});
process.on('SIGINT', function () { process.on('SIGINT', function () {
console.log('Ctrl-C...'); console.log('Ctrl-C...');
process.exit(2); process.exit(2);