From fd41db2a89f191c94e74ba20d5873a2a5b3e4669 Mon Sep 17 00:00:00 2001 From: hypercross Date: Mon, 20 Apr 2026 18:49:56 +0800 Subject: [PATCH] fix(sts-like-viewer): defer interactive setup until shape is available Delay calling `setupInteractive` in `InventoryItemContainer` until the item shape is actually rendered to ensure the hit area matches the visual representation. --- .../src/gameobjects/InventoryItemContainer.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/sts-like-viewer/src/gameobjects/InventoryItemContainer.ts b/packages/sts-like-viewer/src/gameobjects/InventoryItemContainer.ts index 61b3ef8..2e0255e 100644 --- a/packages/sts-like-viewer/src/gameobjects/InventoryItemContainer.ts +++ b/packages/sts-like-viewer/src/gameobjects/InventoryItemContainer.ts @@ -28,7 +28,6 @@ export class InventoryItemContainer extends Phaser.GameObjects.Container { ) { super(scene, gridOffsetX, gridOffsetY); scene.add.existing(this); - this.setupInteractive(); const graphics = this.scene.add.graphics(); const label = this.scene.add.text( @@ -57,10 +56,15 @@ export class InventoryItemContainer extends Phaser.GameObjects.Container { const color = computed(() => { return this.getItemColor(this.item.value?.id ?? ""); }); + let hasSize = false; disposables.addEffect(() => { graphics.clear(); if (!shape.value) return; this.renderGraphics(graphics, shape.value, color.value); + + if (hasSize) return; + hasSize = true; + this.setupInteractive(); }); const transform = computed(() => {