fix(sts-like-viewer): fix item movement detection and removal

- Update `InventoryItemContainer` to correctly detect rotation changes
- Use `removeItemFromGrid` in `InventoryTestScene` for item removal
This commit is contained in:
hypercross 2026-04-21 00:16:50 +08:00
parent fe0621cedf
commit eff62bc0ed
2 changed files with 11 additions and 10 deletions

View File

@ -197,7 +197,7 @@ export class InventoryItemContainer extends Phaser.GameObjects.Container {
if ( if (
clampedX !== item.transform.offset.x || clampedX !== item.transform.offset.x ||
clampedY !== item.transform.offset.y || clampedY !== item.transform.offset.y ||
finalRotation !== 0 finalRotation !== item.transform.rotation
) { ) {
return this.callbacks.onMoveItem( return this.callbacks.onMoveItem(
item.id, item.id,

View File

@ -2,7 +2,11 @@ import { ReactiveScene } from "boardgame-phaser";
import { createButton } from "@/utils/createButton"; import { createButton } from "@/utils/createButton";
import { GRID_CONFIG } from "@/config"; import { GRID_CONFIG } from "@/config";
import { createInventorySignal, moveItem } from "@/state/inventory"; import { createInventorySignal, moveItem } from "@/state/inventory";
import { createItemIn, data } from "boardgame-core/samples/slay-the-spire-like"; import {
createItemIn,
data,
removeItemFromGrid,
} from "boardgame-core/samples/slay-the-spire-like";
import { createInventoryItemSpawner } from "@/gameobjects/InventoryItemSpawner"; import { createInventoryItemSpawner } from "@/gameobjects/InventoryItemSpawner";
import { SceneKey } from "./types"; import { SceneKey } from "./types";
@ -176,14 +180,11 @@ export class InventoryTestScene extends ReactiveScene {
private removeLastItem(): void { private removeLastItem(): void {
this.inventorySignal.produce((inventory) => { this.inventorySignal.produce((inventory) => {
const items = Array.from(inventory.items.entries()); const ids = [...inventory.items.keys()];
const last = ids.length > 0 ? ids[ids.length - 1] : null;
if (items.length === 0) { console.log({ last });
return; if (!last) return;
} removeItemFromGrid(inventory, last);
const [lastId] = items[items.length - 1];
inventory.items.delete(lastId);
}); });
} }
} }