mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-02 06:22:15 +02:00
Fixed types in held item manager
This commit is contained in:
parent
ff73c5b038
commit
20d4d3aa05
@ -14,7 +14,7 @@ interface HeldItemProperties {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type HeldItemPropertyMap = {
|
type HeldItemPropertyMap = {
|
||||||
[key in HeldItemId]: HeldItemProperties;
|
[key in HeldItemId]?: HeldItemProperties;
|
||||||
};
|
};
|
||||||
|
|
||||||
interface FormChangeItemProperties {
|
interface FormChangeItemProperties {
|
||||||
@ -22,7 +22,7 @@ interface FormChangeItemProperties {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type FormChangeItemPropertyMap = {
|
type FormChangeItemPropertyMap = {
|
||||||
[key in FormChangeItem]: FormChangeItemProperties;
|
[key in FormChangeItem]?: FormChangeItemProperties;
|
||||||
};
|
};
|
||||||
|
|
||||||
export class PokemonItemManager {
|
export class PokemonItemManager {
|
||||||
@ -31,6 +31,7 @@ export class PokemonItemManager {
|
|||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.heldItems = {};
|
this.heldItems = {};
|
||||||
|
this.formChangeItems = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
getHeldItems(): number[] {
|
getHeldItems(): number[] {
|
||||||
@ -59,31 +60,40 @@ export class PokemonItemManager {
|
|||||||
return itemType in this.heldItems;
|
return itemType in this.heldItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
getItem(itemType: HeldItemId): HeldItemProperties {
|
getItem(itemType: HeldItemId): HeldItemProperties {
|
||||||
// TODO: Not very safe
|
if (itemType in this.heldItems) {
|
||||||
return this.heldItems[itemType];
|
return this.heldItems[itemType];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
getStack(itemType: HeldItemId): number {
|
getStack(itemType: HeldItemId): number {
|
||||||
return itemType in this.heldItems ? this.heldItems[itemType].stack : 0;
|
const item = this.heldItems[itemType];
|
||||||
|
return item ? item.stack : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
add(itemType: HeldItemId, addStack = 1, data?: HELD_ITEM_DATA) {
|
add(itemType: HeldItemId, addStack = 1, data?: HELD_ITEM_DATA) {
|
||||||
const maxStack = allHeldItems[itemType].getMaxStackCount();
|
const maxStack = allHeldItems[itemType].getMaxStackCount();
|
||||||
|
const item = this.heldItems[itemType];
|
||||||
|
|
||||||
if (this.hasItem(itemType)) {
|
if (item) {
|
||||||
// TODO: We may want an error message of some kind instead
|
// TODO: We may want an error message of some kind instead
|
||||||
this.heldItems[itemType].stack = Math.min(this.heldItems[itemType].stack + addStack, maxStack);
|
item.stack = Math.min(item.stack + addStack, maxStack);
|
||||||
} else {
|
} else {
|
||||||
this.heldItems[itemType] = { stack: Math.min(addStack, maxStack), disabled: false, data: data };
|
this.heldItems[itemType] = { stack: Math.min(addStack, maxStack), disabled: false, data: data };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
remove(itemType: HeldItemId, removeStack = 1, all = false) {
|
remove(itemType: HeldItemId, removeStack = 1, all = false) {
|
||||||
this.heldItems[itemType].stack -= removeStack;
|
const item = this.heldItems[itemType];
|
||||||
|
|
||||||
if (all || this.heldItems[itemType].stack <= 0) {
|
if (item) {
|
||||||
delete this.heldItems[itemType];
|
item.stack -= removeStack;
|
||||||
|
|
||||||
|
if (all || item.stack <= 0) {
|
||||||
|
delete this.heldItems[itemType];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,7 +108,11 @@ export class PokemonItemManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
hasActiveFormChangeItem(id: FormChangeItem): boolean {
|
hasActiveFormChangeItem(id: FormChangeItem): boolean {
|
||||||
return id in this.formChangeItems && this.formChangeItems[id].active;
|
const item = this.formChangeItems[id];
|
||||||
|
if (item) {
|
||||||
|
return item.active;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
getFormChangeItems(): FormChangeItem[] {
|
getFormChangeItems(): FormChangeItem[] {
|
||||||
@ -106,12 +120,18 @@ export class PokemonItemManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getActiveFormChangeItems(): FormChangeItem[] {
|
getActiveFormChangeItems(): FormChangeItem[] {
|
||||||
return this.getFormChangeItems().filter(m => this.formChangeItems[m].active);
|
return this.getFormChangeItems().filter(m => this.formChangeItems[m]?.active);
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleActive(id: FormChangeItem) {
|
toggleActive(id: FormChangeItem) {
|
||||||
if (id in this.formChangeItems) {
|
const item = this.formChangeItems[id];
|
||||||
this.formChangeItems[id].active = !this.formChangeItems[id].active;
|
if (item) {
|
||||||
|
item.active = !item.active;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
clearItems() {
|
||||||
|
this.heldItems = {};
|
||||||
|
this.formChangeItems = {};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user