Inventory system improvements,

stats
This commit is contained in:
2023-09-18 12:33:06 +02:00
parent 870aa12161
commit 0beec15332
14 changed files with 203 additions and 81 deletions

View File

@@ -1,9 +1,57 @@
import { enums } from "./enums"
import { game } from "../game"
export class itemData{
name : string
id : number
rarity: number
itemType : number
stats = {}
name : string
id : number
templateId : number
rarity : number
count : number = 1
stats : Stat[] = []
static fromPersistentData(data : persistentItemData){
let item = new itemData()
item.name = data.name;
item.id = ++game.itemCount;
item.templateId = data.id;
item.rarity = Math.floor(Math.random()*data.rarityMax);
item.count = 1;
return item
}
static copy(data : itemData){
let item = new itemData()
item.name = data.name;
item.id = data.id;
item.templateId = data.templateId;
item.rarity = data.rarity
item.count = data.count
data.stats.forEach(stat=>item.stats.push(stat))
return item
}
}
export class persistentItemData{
name: string
id: number
itemType: number
description: string
rarityMin: number
rarityMax: number
maxCount: number
tags: number[] = []
stats: Stat[] = []
constructor(init?: Partial<persistentItemData>) {
Object.assign(this, init);
}
}
export interface Stat {
Key: number
Value: number
}

View File

@@ -2,5 +2,5 @@ import { itemData } from "./itemData"
export class itemGenerated{
instanceId: number
item: itemData
item: itemData | null
}

View File

@@ -13,7 +13,7 @@ export class lobbyState{
lobby.players = []
lobby.users = []
for (let i = 0; i < this.players.length; i++) {
lobby.players.push(playerData.copyLight(this.players[i]));
lobby.players.push(this.players[i].copyLight());
}
return lobby
}

View File

@@ -3,14 +3,42 @@ import { playerInventory } from "./playerInventory";
export class playerData{
id : number
level : number = 1
characterId : number
inventory : playerInventory = new playerInventory()
rigidbody : physicsObject = new physicsObject()
static copyLight(data : playerData){
copyLight(){
let player : any = {}
player.id = data.id
player.rigidbody = data.rigidbody
player.id = this.id
player.rigidbody = this.rigidbody
return player
}
getItemById(id : number){
let item = this.inventory.items.find(i=>i.id == id)
return item
}
validateEquipment(){
if(this.inventory.weapon != -1){
if(this.getItemById(this.inventory.weapon) == null){
this.inventory.weapon == -1;
}
}
if(this.inventory.equipment[0] != -1){
if(this.getItemById(this.inventory.equipment[0]) == null){
this.inventory.equipment[0] == -1;
}
}
if(this.inventory.equipment[1] != -1){
if(this.getItemById(this.inventory.equipment[1]) == null){
this.inventory.equipment[1] == -1;
}
}
}
constructor(init?: Partial<playerData>) {
Object.assign(this, init);
}
}

View File

@@ -4,16 +4,4 @@ export class playerInventory{
weapon : number = -1
equipment : number[] = [-1,-1]
items : itemData[] = []
static validate(inv : playerInventory){
if(inv.equipment[0] == inv.weapon){
inv.equipment[0] = -1
}
if(inv.equipment[1] == inv.weapon){
inv.equipment[1] = -1
}
if(inv.equipment[1] == inv.equipment[0]){
inv.equipment[1] = -1
}
}
}