From 113d240f719e33c9d2918eb7b55f06b231c65888 Mon Sep 17 00:00:00 2001 From: hypercross Date: Tue, 21 Apr 2026 23:17:19 +0800 Subject: [PATCH] refactor: simplify item effect handling in grid inventory Update `getItemEffects` to directly use `startEffects` from item meta instead of performing a manual lookup against the effect table. This is made possible by updating `GameItemMeta` to store the full effect object (data and stacks) instead of just the effect ID and stack count. --- .../system/grid-inventory/transform.ts | 21 ++----------------- .../system/grid-inventory/types.ts | 4 ++-- 2 files changed, 4 insertions(+), 21 deletions(-) diff --git a/src/samples/slay-the-spire-like/system/grid-inventory/transform.ts b/src/samples/slay-the-spire-like/system/grid-inventory/transform.ts index 720bf03..8d149b3 100644 --- a/src/samples/slay-the-spire-like/system/grid-inventory/transform.ts +++ b/src/samples/slay-the-spire-like/system/grid-inventory/transform.ts @@ -259,10 +259,7 @@ export function getAdjacentItems( } // export type EffectTable = Record; -export function getItemEffects( - inv: GridInventory, - lookup: EffectData[], -) { +export function getItemEffects(inv: GridInventory) { const effects = {} as Record< string, Record @@ -273,21 +270,7 @@ export function getItemEffects( const { startEffects } = item.meta; if (!startEffects) continue; - const table = (effects[item.id] = {} as Record< - string, - { - data: EffectData; - stacks: number; - } - >); - for (const [id, stacks] of Object.entries(startEffects)) { - const data = lookup.find((row) => row.id === id); - if (!data) continue; - table[id] = { - data, - stacks, - }; - } + effects[item.id] = startEffects; } return effects; diff --git a/src/samples/slay-the-spire-like/system/grid-inventory/types.ts b/src/samples/slay-the-spire-like/system/grid-inventory/types.ts index 9bed284..76c6d9d 100644 --- a/src/samples/slay-the-spire-like/system/grid-inventory/types.ts +++ b/src/samples/slay-the-spire-like/system/grid-inventory/types.ts @@ -1,4 +1,4 @@ -import { ItemData } from "../types"; +import { EffectData, ItemData } from "../types"; import type { ParsedShape } from "../utils/parse-shape"; import type { Transform2D } from "../utils/shape-collision"; @@ -64,7 +64,7 @@ export interface GameItemMeta { itemData: ItemData; shape: ParsedShape; consumedUses?: number; - startEffects?: Record; + startEffects?: Record; tradePrice?: number; } export type GameItem = InventoryItem;