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(){
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(){

View File

@ -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
}

View File

@ -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()

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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
case 4: //EquipmentChange
{
let itemStack = inventory.items.find(i=>i.id == change.id)
itemStack.count -= change.change
break;
}
case 5: //EquipmentChange
{
inventory.equipment = change.equipment
inventory.equipment[change.itemSlot] = change.item.id
break;
}
}

View File

@ -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(){

View File

@ -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);