mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-08-09 00:49:27 +02:00
Auxiliary functions to fix type complaints in item managers
This commit is contained in:
parent
175f2b74e9
commit
2744567b21
@ -10,6 +10,7 @@ import {
|
|||||||
type FormChangeItemSpecs,
|
type FormChangeItemSpecs,
|
||||||
type HeldItemSaveData,
|
type HeldItemSaveData,
|
||||||
} from "#app/items/held-item-data-types";
|
} from "#app/items/held-item-data-types";
|
||||||
|
import { getTypedEntries, getTypedKeys } from "#app/utils/common";
|
||||||
|
|
||||||
export class PokemonItemManager {
|
export class PokemonItemManager {
|
||||||
public heldItems: HeldItemDataMap;
|
public heldItems: HeldItemDataMap;
|
||||||
@ -34,58 +35,58 @@ export class PokemonItemManager {
|
|||||||
|
|
||||||
generateHeldItemConfiguration(restrictedIds?: HeldItemId[]): HeldItemConfiguration {
|
generateHeldItemConfiguration(restrictedIds?: HeldItemId[]): HeldItemConfiguration {
|
||||||
const config: HeldItemConfiguration = [];
|
const config: HeldItemConfiguration = [];
|
||||||
for (const [k, item] of Object.entries(this.heldItems)) {
|
for (const [id, item] of getTypedEntries(this.heldItems)) {
|
||||||
const id = Number(k);
|
|
||||||
if (item && (!restrictedIds || id in restrictedIds)) {
|
if (item && (!restrictedIds || id in restrictedIds)) {
|
||||||
const specs: HeldItemSpecs = { ...item, id };
|
const specs: HeldItemSpecs = { ...item, id };
|
||||||
config.push({ entry: specs, count: 1 });
|
config.push({ entry: specs, count: 1 });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (const [k, item] of Object.entries(this.formChangeItems)) {
|
for (const [id, item] of getTypedEntries(this.formChangeItems)) {
|
||||||
const id = Number(k);
|
if (item) {
|
||||||
const specs: FormChangeItemSpecs = { ...item, id };
|
const specs: FormChangeItemSpecs = { ...item, id };
|
||||||
config.push({ entry: specs, count: 1 });
|
config.push({ entry: specs, count: 1 });
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
generateSaveData(): HeldItemSaveData {
|
generateSaveData(): HeldItemSaveData {
|
||||||
const saveData: HeldItemSaveData = [];
|
const saveData: HeldItemSaveData = [];
|
||||||
for (const [k, item] of Object.entries(this.heldItems)) {
|
for (const [id, item] of getTypedEntries(this.heldItems)) {
|
||||||
const id = Number(k);
|
|
||||||
if (item) {
|
if (item) {
|
||||||
const specs: HeldItemSpecs = { ...item, id };
|
const specs: HeldItemSpecs = { ...item, id };
|
||||||
saveData.push(specs);
|
saveData.push(specs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (const [k, item] of Object.entries(this.formChangeItems)) {
|
for (const [id, item] of getTypedEntries(this.formChangeItems)) {
|
||||||
const id = Number(k);
|
if (item) {
|
||||||
const specs: FormChangeItemSpecs = { ...item, id };
|
const specs: FormChangeItemSpecs = { ...item, id };
|
||||||
saveData.push(specs);
|
saveData.push(specs);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return saveData;
|
return saveData;
|
||||||
}
|
}
|
||||||
|
|
||||||
getHeldItems(): number[] {
|
getHeldItems(): HeldItemId[] {
|
||||||
return Object.keys(this.heldItems).map(k => Number(k));
|
return getTypedKeys(this.heldItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
getTransferableHeldItems(): number[] {
|
getTransferableHeldItems(): HeldItemId[] {
|
||||||
return Object.keys(this.heldItems)
|
return getTypedKeys(this.heldItems)
|
||||||
.filter(k => allHeldItems[k].isTransferable)
|
.filter(k => allHeldItems[k].isTransferable)
|
||||||
.map(k => Number(k));
|
.map(k => k);
|
||||||
}
|
}
|
||||||
|
|
||||||
getStealableHeldItems(): number[] {
|
getStealableHeldItems(): HeldItemId[] {
|
||||||
return Object.keys(this.heldItems)
|
return getTypedKeys(this.heldItems)
|
||||||
.filter(k => allHeldItems[k].isStealable)
|
.filter(k => allHeldItems[k].isStealable)
|
||||||
.map(k => Number(k));
|
.map(k => k);
|
||||||
}
|
}
|
||||||
|
|
||||||
getSuppressableHeldItems(): number[] {
|
getSuppressableHeldItems(): HeldItemId[] {
|
||||||
return Object.keys(this.heldItems)
|
return getTypedKeys(this.heldItems)
|
||||||
.filter(k => allHeldItems[k].isSuppressable)
|
.filter(k => allHeldItems[k].isSuppressable)
|
||||||
.map(k => Number(k));
|
.map(k => k);
|
||||||
}
|
}
|
||||||
|
|
||||||
hasItem(itemType: HeldItemId): boolean {
|
hasItem(itemType: HeldItemId): boolean {
|
||||||
@ -93,7 +94,7 @@ export class PokemonItemManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
hasItemCategory(categoryId: HeldItemCategoryId): boolean {
|
hasItemCategory(categoryId: HeldItemCategoryId): boolean {
|
||||||
return Object.keys(this.heldItems).some(id => isItemInCategory(Number(id), categoryId));
|
return getTypedKeys(this.heldItems).some(id => isItemInCategory(id, categoryId));
|
||||||
}
|
}
|
||||||
|
|
||||||
getStack(itemType: HeldItemId): number {
|
getStack(itemType: HeldItemId): number {
|
||||||
@ -117,7 +118,7 @@ export class PokemonItemManager {
|
|||||||
overrideItems(newItems: HeldItemDataMap) {
|
overrideItems(newItems: HeldItemDataMap) {
|
||||||
this.heldItems = newItems;
|
this.heldItems = newItems;
|
||||||
// The following is to allow randomly generated item configs to have stack 0
|
// The following is to allow randomly generated item configs to have stack 0
|
||||||
for (const [item, properties] of Object.entries(this.heldItems)) {
|
for (const [item, properties] of getTypedEntries(this.heldItems)) {
|
||||||
if (!properties || properties.stack <= 0) {
|
if (!properties || properties.stack <= 0) {
|
||||||
delete this.heldItems[item];
|
delete this.heldItems[item];
|
||||||
}
|
}
|
||||||
@ -208,7 +209,7 @@ export class PokemonItemManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getFormChangeItems(): FormChangeItem[] {
|
getFormChangeItems(): FormChangeItem[] {
|
||||||
return Object.keys(this.formChangeItems).map(k => Number(k));
|
return getTypedKeys(this.formChangeItems).map(k => k);
|
||||||
}
|
}
|
||||||
|
|
||||||
getActiveFormChangeItems(): FormChangeItem[] {
|
getActiveFormChangeItems(): FormChangeItem[] {
|
||||||
|
@ -7,6 +7,7 @@ import {
|
|||||||
type TrainerItemDataMap,
|
type TrainerItemDataMap,
|
||||||
type TrainerItemSpecs,
|
type TrainerItemSpecs,
|
||||||
} from "#app/items/trainer-item-data-types";
|
} from "#app/items/trainer-item-data-types";
|
||||||
|
import { getTypedEntries, getTypedKeys } from "#app/utils/common";
|
||||||
|
|
||||||
export class TrainerItemManager {
|
export class TrainerItemManager {
|
||||||
public trainerItems: TrainerItemDataMap;
|
public trainerItems: TrainerItemDataMap;
|
||||||
@ -29,8 +30,7 @@ export class TrainerItemManager {
|
|||||||
|
|
||||||
generateTrainerItemConfiguration(restrictedIds?: TrainerItemId[]): TrainerItemConfiguration {
|
generateTrainerItemConfiguration(restrictedIds?: TrainerItemId[]): TrainerItemConfiguration {
|
||||||
const config: TrainerItemConfiguration = [];
|
const config: TrainerItemConfiguration = [];
|
||||||
for (const [k, item] of Object.entries(this.trainerItems)) {
|
for (const [id, item] of getTypedEntries(this.trainerItems)) {
|
||||||
const id = Number(k);
|
|
||||||
if (item && (!restrictedIds || id in restrictedIds)) {
|
if (item && (!restrictedIds || id in restrictedIds)) {
|
||||||
const specs: TrainerItemSpecs = { ...item, id };
|
const specs: TrainerItemSpecs = { ...item, id };
|
||||||
config.push({ entry: specs, count: 1 });
|
config.push({ entry: specs, count: 1 });
|
||||||
@ -41,8 +41,7 @@ export class TrainerItemManager {
|
|||||||
|
|
||||||
generateSaveData(): TrainerItemSaveData {
|
generateSaveData(): TrainerItemSaveData {
|
||||||
const saveData: TrainerItemSaveData = [];
|
const saveData: TrainerItemSaveData = [];
|
||||||
for (const [k, item] of Object.entries(this.trainerItems)) {
|
for (const [id, item] of getTypedEntries(this.trainerItems)) {
|
||||||
const id = Number(k);
|
|
||||||
if (item) {
|
if (item) {
|
||||||
const specs: TrainerItemSpecs = { ...item, id };
|
const specs: TrainerItemSpecs = { ...item, id };
|
||||||
saveData.push(specs);
|
saveData.push(specs);
|
||||||
@ -51,8 +50,8 @@ export class TrainerItemManager {
|
|||||||
return saveData;
|
return saveData;
|
||||||
}
|
}
|
||||||
|
|
||||||
getTrainerItems(): number[] {
|
getTrainerItems(): TrainerItemId[] {
|
||||||
return Object.keys(this.trainerItems).map(k => Number(k));
|
return getTypedKeys(this.trainerItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
hasItem(itemType: TrainerItemId): boolean {
|
hasItem(itemType: TrainerItemId): boolean {
|
||||||
|
@ -285,6 +285,14 @@ export function getEnumValues(enumType: any): number[] {
|
|||||||
.map(v => Number.parseInt(v!.toString()));
|
.map(v => Number.parseInt(v!.toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getTypedKeys<T extends Record<number, any>, K extends number = Extract<keyof T, number>>(obj: T): K[] {
|
||||||
|
return Object.keys(obj).map(k => Number(k) as K);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getTypedEntries<T extends object>(obj: T): [keyof T, T[keyof T]][] {
|
||||||
|
return Object.entries(obj) as [keyof T, T[keyof T]][];
|
||||||
|
}
|
||||||
|
|
||||||
export function executeIf<T>(condition: boolean, promiseFunc: () => Promise<T>): Promise<T | null> {
|
export function executeIf<T>(condition: boolean, promiseFunc: () => Promise<T>): Promise<T | null> {
|
||||||
return condition ? promiseFunc() : new Promise<T | null>(resolve => resolve(null));
|
return condition ? promiseFunc() : new Promise<T | null>(resolve => resolve(null));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user