From a17e460f5004c7dd0f2f464cc8a1e071e1c4eadd Mon Sep 17 00:00:00 2001 From: katboi01 Date: Sun, 1 Dec 2024 18:02:42 +0100 Subject: [PATCH] Updated inventory management. Improved saving. --- Account/users.ts | 5 +---- Classes/Incoming/inventoryChange.ts | 11 +++-------- Classes/itemData.ts | 18 ------------------ Classes/playerData.ts | 5 +++++ Classes/userData.ts | 8 +++++--- Items/_updateInventory.ts | 20 +++++++------------- Player/players.ts | 5 +---- index.ts | 10 +++++++++- 8 files changed, 31 insertions(+), 51 deletions(-) diff --git a/Account/users.ts b/Account/users.ts index 07772ac..7c9b8db 100644 --- a/Account/users.ts +++ b/Account/users.ts @@ -38,10 +38,7 @@ export class users{ } static saveUsers(){ - game.accountsDB.forEach(user => { - let data = JSON.stringify(user, null, 2); - fs.writeFileSync(`Database/Users/${user.id}_${user.login}.json`, data); - }); + game.accountsDB.forEach(user => {user.save(fs)}); } static loadUsers(){ diff --git a/Classes/Incoming/inventoryChange.ts b/Classes/Incoming/inventoryChange.ts index 660016d..eceaf8b 100644 --- a/Classes/Incoming/inventoryChange.ts +++ b/Classes/Incoming/inventoryChange.ts @@ -1,12 +1,7 @@ -import { Stat } from "../itemData" +import { itemData } from "../itemData" export class inventoryChange{ - id : number - name : string - rarity : number - change : number - templateId: number operation : number - equipment : number[] - stats : Stat[] = [] + item : itemData + itemSlot : number } \ No newline at end of file diff --git a/Classes/itemData.ts b/Classes/itemData.ts index a5cce6d..ced3be2 100644 --- a/Classes/itemData.ts +++ b/Classes/itemData.ts @@ -21,24 +21,6 @@ export class itemData{ 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){ let item = new itemData() diff --git a/Classes/playerData.ts b/Classes/playerData.ts index 181aba5..8e9f9d5 100644 --- a/Classes/playerData.ts +++ b/Classes/playerData.ts @@ -54,4 +54,9 @@ export class playerData{ this.inventory.equipment = [-1, -1, -1] } } + + save(fs){ + let data = JSON.stringify(this, null, 2); + fs.writeFileSync(`Database/Players/${this.id}.json`, data); + } } \ No newline at end of file diff --git a/Classes/userData.ts b/Classes/userData.ts index 5154a18..efe709b 100644 --- a/Classes/userData.ts +++ b/Classes/userData.ts @@ -1,6 +1,3 @@ -import { itemData } from "./itemData"; -import { playerData } from "./playerData"; - export class userData{ id: number; checksum: number; @@ -20,4 +17,9 @@ export class userData{ delete safeUser.checksum return safeUser } + + save(fs){ + let data = JSON.stringify(this, null, 2); + fs.writeFileSync(`Database/Users/${this.id}_${this.login}.json`, data); + } } \ No newline at end of file diff --git a/Items/_updateInventory.ts b/Items/_updateInventory.ts index c4db6ce..a5328f2 100644 --- a/Items/_updateInventory.ts +++ b/Items/_updateInventory.ts @@ -17,31 +17,25 @@ export function updateInventory(socket, data){ break; case 1: //ItemAdd { - let item = itemData.fromChange(change) + let item = itemData.copy(change.item) inventory.items.push(item) break; } - case 2: //ItemAddToStack + case 2: //ItemChangeStack { - let itemStack = inventory.items.find(i=>i.id == change.id) - itemStack.count += change.change + let itemStack = inventory.items.find(i=>i.id == change.item.id) + itemStack.count += change.item.count break; } 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) break; - } - case 4: //ItemRemoveFromStack - { - let itemStack = inventory.items.find(i=>i.id == change.id) - itemStack.count -= change.change - break; } - case 5: //EquipmentChange + case 4: //EquipmentChange { - inventory.equipment = change.equipment + inventory.equipment[change.itemSlot] = change.item.id break; } } diff --git a/Player/players.ts b/Player/players.ts index 7ae5803..eaf4bba 100644 --- a/Player/players.ts +++ b/Player/players.ts @@ -21,10 +21,7 @@ export class players{ } static savePlayers(){ - game.playersDB.forEach(player => { - let data = JSON.stringify(player, null, 2); - fs.writeFileSync(`Database/Players/${player.id}.json`, data); - }); + game.playersDB.forEach(player => {player.save(fs)}); } static loadPlayers(){ diff --git a/index.ts b/index.ts index 2c99c4f..e5d0b4a 100644 --- a/index.ts +++ b/index.ts @@ -41,7 +41,11 @@ io.on('connection', (socket) => { socket.on("disconnect", () => { socket.disconnect() + if(socket.hasOwnProperty("player")){ + socket.player.save() + } if(socket.hasOwnProperty("user")){ + socket.user.save() game.lobbyState.removeUser(socket.user.id) delete socket.user } @@ -85,13 +89,17 @@ setInterval(() => { for(let i = 0; i < lobbyState.dungeons.length; i++){ console.log(lobbyState.dungeons[i].entranceId + " " + lobbyState.dungeons[i].playerCount) } -}, 1000) +}, 5000) setInterval(() => { users.saveUsers(); players.savePlayers(); }, 1000 * 60 * 60 * 12) //twice a day +process.on('uncaughtException', function (err) { + console.log('Caught exception: ', err); + }); + process.on('SIGINT', function () { console.log('Ctrl-C...'); process.exit(2);