From 6b3ce8487a3653fb1b2fe4385ecc0000826b4512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20B=C3=A9chard?= Date: Sun, 4 May 2025 20:51:44 -0400 Subject: [PATCH] Fix item icons not displaying in shop due to asynchronous sprite loading --- package-lock.json | 1 - src/ui/modifier-select-ui-handler.ts | 21 ++++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index da00292e7b8..5485b08891e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,7 +39,6 @@ "lefthook": "^1.11.5", "msw": "^2.7.3", "phaser3spectorjs": "^0.0.8", - "rollup": "^4.40.1", "typedoc": "^0.28.1", "typescript": "^5.8.2", "typescript-eslint": "^8.28.0", diff --git a/src/ui/modifier-select-ui-handler.ts b/src/ui/modifier-select-ui-handler.ts index 9ba54491175..341a298b695 100644 --- a/src/ui/modifier-select-ui-handler.ts +++ b/src/ui/modifier-select-ui-handler.ts @@ -763,7 +763,26 @@ class ModifierOption extends Phaser.GameObjects.Container { this.add(this.itemContainer); const getItem = () => { - const item = globalScene.add.sprite(0, 0, "items", this.modifierTypeOption.type?.iconImage); + const iconKey = this.modifierTypeOption.type?.iconImage; + const item = globalScene.add.sprite(0, 0, "items", iconKey); + item.setVisible(false); + + const showItemSprite = () => { + if (globalScene.textures.get("items").has(iconKey)) { + item.setFrame(iconKey); + } else { + item.setTexture("default_icon"); + } + item.setVisible(true); + }; + + if (globalScene.textures.get("items").has(iconKey)) { + showItemSprite(); + } else { + globalScene.load.once("complete", showItemSprite); + globalScene.load.start(); + } + return item; };