From 175c5e06d4e3ea818a74812733f8d1728948ce18 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Fri, 6 Sep 2024 13:36:16 -0400 Subject: [PATCH] v2.5.0: trinket selection window now force-reshows itself --- .../items/trinkets/TrinketCatalyst.java | 30 ++++++++++++++++++- .../scenes/AlchemyScene.java | 5 ++++ .../scenes/GameScene.java | 7 ++++- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/trinkets/TrinketCatalyst.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/trinkets/TrinketCatalyst.java index b740623e4..8076feed0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/trinkets/TrinketCatalyst.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/trinkets/TrinketCatalyst.java @@ -21,8 +21,11 @@ package com.shatteredpixel.shatteredpixeldungeon.items.trinkets; +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.Badges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; +import com.shatteredpixel.shatteredpixeldungeon.Statistics; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.Item; @@ -38,9 +41,11 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.ItemButton; import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton; import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextBlock; import com.shatteredpixel.shatteredpixeldungeon.ui.Window; +import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.windows.IconTitle; import com.shatteredpixel.shatteredpixeldungeon.windows.WndInfoItem; import com.shatteredpixel.shatteredpixeldungeon.windows.WndSadGhost; +import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import java.io.IOException; @@ -79,6 +84,10 @@ public class TrinketCatalyst extends Item { private ArrayList rolledTrinkets = new ArrayList<>(); + public boolean hasRolledTrinkets(){ + return !rolledTrinkets.isEmpty(); + } + private static final String ROLLED_TRINKETS = "rolled_trinkets"; @Override @@ -217,7 +226,26 @@ public class TrinketCatalyst extends Item { cata.detach(Dungeon.hero.belongings.backpack); Catalog.countUse(cata.getClass()); result.identify(); - ((AlchemyScene)ShatteredPixelDungeon.scene()).craftItem(null, result); + if (ShatteredPixelDungeon.scene() instanceof AlchemyScene) { + ((AlchemyScene) ShatteredPixelDungeon.scene()).craftItem(null, result); + } else { + Sample.INSTANCE.play( Assets.Sounds.PUFF ); + + if (result.doPickUp(Dungeon.hero)){ + GLog.p( Messages.capitalize(Messages.get(Hero.class, "you_now_have", item.name())) ); + } else { + Dungeon.level.drop(result, Dungeon.hero.pos); + } + + Statistics.itemsCrafted++; + Badges.validateItemsCrafted(); + + try { + Dungeon.saveAll(); + } catch (IOException e) { + ShatteredPixelDungeon.reportException(e); + } + } } } }; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/AlchemyScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/AlchemyScene.java index b60d23ae5..c88ed93d2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/AlchemyScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/AlchemyScene.java @@ -514,6 +514,11 @@ public class AlchemyScene extends PixelScene { align(btnGuide); add(btnGuide); + TrinketCatalyst cata = Dungeon.hero.belongings.getItem(TrinketCatalyst.class); + if (cata != null && cata.hasRolledTrinkets()){ + addToFront(new TrinketCatalyst.WndTrinket(cata)); + } + fadeIn(); try { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java index 7efc53ca8..ce12066a9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java @@ -60,9 +60,9 @@ import com.shatteredpixel.shatteredpixeldungeon.items.journal.Guidebook; import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation; import com.shatteredpixel.shatteredpixeldungeon.items.trinkets.DimensionalSundial; +import com.shatteredpixel.shatteredpixeldungeon.items.trinkets.TrinketCatalyst; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon; import com.shatteredpixel.shatteredpixeldungeon.journal.Bestiary; -import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog; import com.shatteredpixel.shatteredpixeldungeon.journal.Document; import com.shatteredpixel.shatteredpixeldungeon.journal.Journal; import com.shatteredpixel.shatteredpixeldungeon.journal.Notes; @@ -610,6 +610,11 @@ public class GameScene extends PixelScene { GameScene.flashForDocument(Document.ADVENTURERS_GUIDE, Document.GUIDE_DIEING); } + TrinketCatalyst cata = Dungeon.hero.belongings.getItem(TrinketCatalyst.class); + if (cata != null && cata.hasRolledTrinkets()){ + addToFront(new TrinketCatalyst.WndTrinket(cata)); + } + if (!invVisible) toggleInvPane(); fadeIn();