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",
"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",

View File

@ -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;
};