Updated inventory management. Improved saving.
This commit is contained in:
parent
f3a56611c6
commit
a17e460f50
|
@ -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(){
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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(){
|
||||
|
|
10
index.ts
10
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);
|
||||
|
|
Loading…
Reference in New Issue