Fix item icons not displaying in shop due to asynchronous sprite loading

This commit is contained in:
Louis Béchard 2025-05-04 20:51:44 -04:00
parent 1042b528ec
commit 6b3ce8487a
2 changed files with 20 additions and 2 deletions

1
package-lock.json generated
View File

@ -39,7 +39,6 @@
"lefthook": "^1.11.5", "lefthook": "^1.11.5",
"msw": "^2.7.3", "msw": "^2.7.3",
"phaser3spectorjs": "^0.0.8", "phaser3spectorjs": "^0.0.8",
"rollup": "^4.40.1",
"typedoc": "^0.28.1", "typedoc": "^0.28.1",
"typescript": "^5.8.2", "typescript": "^5.8.2",
"typescript-eslint": "^8.28.0", "typescript-eslint": "^8.28.0",

View File

@ -763,7 +763,26 @@ class ModifierOption extends Phaser.GameObjects.Container {
this.add(this.itemContainer); this.add(this.itemContainer);
const getItem = () => { 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; return item;
}; };