From 36e21c0ffc92b167df84654b89f0ca14180a5034 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 3 Aug 2023 16:34:46 -0400 Subject: [PATCH] v2.2.0: improved levelgen consistency when debugging --- .../scenes/InterlevelScene.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java index e190c6aa6..2c94bf5fd 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java @@ -343,6 +343,24 @@ public class InterlevelScene extends PixelScene { Dungeon.init(); GameLog.wipe(); + //When debugging, we may start a game at a later depth to quickly test something + // if this happens, the games quickly generates all prior levels on branch 0 first, + // which ensures levelgen consistency with a regular game that was played to that depth. + if (DeviceCompat.isDebug()){ + int trueDepth = Dungeon.depth; + int trueBranch = Dungeon.branch; + for (int i = 1; i < trueDepth + (trueBranch == 0 ? 0 : 1); i++){ + if (!Dungeon.levelHasBeenGenerated(i, 0)){ + Dungeon.depth = i; + Dungeon.branch = 0; + Dungeon.level = Dungeon.newLevel(); + Dungeon.saveLevel(GamesInProgress.curSlot); + } + } + Dungeon.depth = trueDepth; + Dungeon.branch = trueBranch; + } + Level level = Dungeon.newLevel(); Dungeon.switchLevel( level, -1 ); } else {