From e8c824e6ebd2240ef1ace459137f0f230cdc1e98 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sun, 25 Feb 2024 12:58:01 -0500 Subject: [PATCH] v2.4.0: improved badge save/display logic when game is ended --- .../shatteredpixeldungeon/Badges.java | 16 +++------------- .../shatteredpixeldungeon/levels/SewerLevel.java | 5 ----- .../scenes/AmuletScene.java | 2 ++ .../scenes/SurfaceScene.java | 9 ++++++--- 4 files changed, 11 insertions(+), 21 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java index d42571172..69dd40e95 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java @@ -1000,21 +1000,11 @@ public class Badges { displayBadge( badge ); } - //necessary in order to display the happy end badge in the surface scene - public static void silentValidateHappyEnd() { - if (!local.contains( Badge.HAPPY_END )){ - local.add( Badge.HAPPY_END ); - } - - if(!local.contains( Badge.HAPPY_END_REMAINS ) && Dungeon.hero.belongings.getItem(RemainsItem.class) != null){ - local.add( Badge.HAPPY_END_REMAINS ); - } - } - public static void validateHappyEnd() { displayBadge( Badge.HAPPY_END ); - if (local.contains(Badge.HAPPY_END_REMAINS)) { - displayBadge(Badge.HAPPY_END_REMAINS); + + if( Dungeon.hero.belongings.getItem(RemainsItem.class) != null ){ + displayBadge( Badge.HAPPY_END_REMAINS ); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java index 2df2fe3db..946141753 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java @@ -22,9 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.levels; import com.shatteredpixel.shatteredpixeldungeon.Assets; -import com.shatteredpixel.shatteredpixeldungeon.Badges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; -import com.shatteredpixel.shatteredpixeldungeon.GamesInProgress; import com.shatteredpixel.shatteredpixeldungeon.Statistics; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Ghost; @@ -154,9 +152,6 @@ public class SewerLevel extends RegularLevel { return false; } else { Statistics.ascended = true; - Badges.silentValidateHappyEnd(); - Dungeon.win( Amulet.class ); - Dungeon.deleteGame( GamesInProgress.curSlot, true ); Game.switchScene( SurfaceScene.class ); return true; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/AmuletScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/AmuletScene.java index ec60060af..d88974e7c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/AmuletScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/AmuletScene.java @@ -22,6 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.scenes; import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.Badges; import com.shatteredpixel.shatteredpixeldungeon.Chrome; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.GamesInProgress; @@ -78,6 +79,7 @@ public class AmuletScene extends PixelScene { protected void onClick() { Dungeon.win( Amulet.class ); Dungeon.deleteGame( GamesInProgress.curSlot, true ); + Badges.saveGlobal(); btnExit.enable(false); btnStay.enable(false); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/SurfaceScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/SurfaceScene.java index 29b1c8174..11fd3f230 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/SurfaceScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/SurfaceScene.java @@ -24,8 +24,10 @@ package com.shatteredpixel.shatteredpixeldungeon.scenes; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Badges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.GamesInProgress; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.Ratmogrify; +import com.shatteredpixel.shatteredpixeldungeon.items.Amulet; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose; import com.shatteredpixel.shatteredpixeldungeon.items.remains.RemainsItem; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfLivingEarth; @@ -264,8 +266,11 @@ public class SurfaceScene extends PixelScene { gameOver.setSize( SKY_WIDTH - FRAME_MARGIN_X * 2, BUTTON_HEIGHT ); gameOver.setPos( frame.x + FRAME_MARGIN_X * 2, frame.y + frame.height + 4 ); add( gameOver ); - + Badges.validateHappyEnd(); + Dungeon.win( Amulet.class ); + Dungeon.deleteGame( GamesInProgress.curSlot, true ); + Badges.saveGlobal(); fadeIn(); } @@ -287,8 +292,6 @@ public class SurfaceScene extends PixelScene { @Override public void destroy() { - Badges.saveGlobal(); - Camera.remove( viewport ); super.destroy(); }