From 4ed89d58841de495edec35ab9d4bf9e5401255c8 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Fri, 9 Aug 2024 14:21:41 -0400 Subject: [PATCH] v2.5.0: improved new region splashes for portrait mobile --- .../main/assets/interfaces/loading_caves.png | Bin 171 -> 0 bytes .../main/assets/interfaces/loading_city.png | Bin 208 -> 0 bytes .../main/assets/interfaces/loading_halls.png | Bin 120 -> 0 bytes .../main/assets/interfaces/loading_prison.png | Bin 475 -> 0 bytes .../main/assets/interfaces/loading_sewers.png | Bin 232 -> 0 bytes .../shatteredpixeldungeon/Assets.java | 6 -- .../shatteredpixeldungeon/Dungeon.java | 15 ++-- .../scenes/HeroSelectScene.java | 2 + .../scenes/InterlevelScene.java | 67 +++++++++++++++--- 9 files changed, 70 insertions(+), 20 deletions(-) delete mode 100644 core/src/main/assets/interfaces/loading_caves.png delete mode 100644 core/src/main/assets/interfaces/loading_city.png delete mode 100644 core/src/main/assets/interfaces/loading_halls.png delete mode 100644 core/src/main/assets/interfaces/loading_prison.png delete mode 100644 core/src/main/assets/interfaces/loading_sewers.png diff --git a/core/src/main/assets/interfaces/loading_caves.png b/core/src/main/assets/interfaces/loading_caves.png deleted file mode 100644 index cda04e21463d4f64cb47dd72ab842d7a12a12f1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-uG=>(o!Z-(m6p`jSf^LP z{0b-@<>}%WQo)!!W!Kr#hQPb_&hrdQGLtouZTNx2+w!}nJ>oaQ?%Td zJ~{U0>g=BV|BTM3{ke6`p#5WZWHZO(|K`7AC9_LeBP5#-Ge=7NO>&lCm}Vhss63DP QBhVHGPgg&ebxsLQ08rFDH2?qr diff --git a/core/src/main/assets/interfaces/loading_city.png b/core/src/main/assets/interfaces/loading_city.png deleted file mode 100644 index 24da8f4ae10b57d6f19a3f531669cda88369c21e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^3h)VW-87@?!k)z^HqF_+aMJAN z%Ei5n8{PMW0A(vZT^vIy7)5)wG9EDyV7XqfaRs9z{zyE{($=Q&N^mA2=Y zSn{Fu_S3#RdtO(j@p$c~TTVd{Jd$m(x;N_-*R-CF|H8V}T*T(K-2Ih6M=*H0`njxg HN@xNANNZHN diff --git a/core/src/main/assets/interfaces/loading_halls.png b/core/src/main/assets/interfaces/loading_halls.png deleted file mode 100644 index e41dabc3414becc35bc408d7ffb5805f6c62ae9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?bT{NXOC)_{M!@ajEJ1yAf zVZba7zI#iho;o}QI}n2vd(mx1nEg-ZYc0NhDLK~#7F4b6ptgg^`cz~Ht5 z!NTQX|J>cJ|F(_>W&kYPaXmi>Ez63+AcjN;sdO5M4D+I_a*$Z48WSooZ3dG6pzVxG z%>QuIFht8$I9z+1t-agx+S&n1Jg^XHDG(RpsGvb1xUB^y zWp>h{gF*{Dmqwt%WS$uXm$JF?RhjN~?<>sVOu=bR!#*H-^cy_a^LV@Swh+aO*m>Dd z2-3PlR46OeS5TH!(jMjeV=$0|w}IPt{?$!}+I;7utmq)1U``8u49~>W(?5Z)7zYAy RQr!Rm002ovPDHLkV1mlf>5u>b diff --git a/core/src/main/assets/interfaces/loading_sewers.png b/core/src/main/assets/interfaces/loading_sewers.png deleted file mode 100644 index 03a9485fc106717d40dc4ba5bd2b6d9755969725..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeXy>jKs-Me>ZZd$&7|Nhmh zS0^SW&fBr3XW6WfkdTI1eGUd996*(=o-U3d6^y(G4Y`{F1lT|PcWw`>bj}tO$$d5V zipGi$*ETGkE&7Y&Y@^)0Zpl?CDiE!R){ gt?G32=$R+%bLK0uZGOo74Co*RPgg&ebxsLQ0KG?G6951J diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java index 82d694cc5..b66466d1b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java @@ -86,12 +86,6 @@ public class Assets { public static final String SURFACE = "interfaces/surface.png"; - public static final String LOADING_SEWERS = "interfaces/loading_sewers.png"; - public static final String LOADING_PRISON = "interfaces/loading_prison.png"; - public static final String LOADING_CAVES = "interfaces/loading_caves.png"; - public static final String LOADING_CITY = "interfaces/loading_city.png"; - public static final String LOADING_HALLS = "interfaces/loading_halls.png"; - public static final String BUFFS_SMALL = "interfaces/buffs.png"; public static final String BUFFS_LARGE = "interfaces/large_buffs.png"; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java index 2e2c7d57e..654c17eb4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java @@ -216,13 +216,9 @@ public class Dungeon { public static boolean dailyReplay; public static String customSeedText = ""; public static long seed; - - public static void init() { - - initialVersion = version = Game.versionCode; - challenges = SPDSettings.challenges(); - mobsToChampion = -1; + //we initialize the seed separately so that things like interlevelscene can access it early + public static void initSeed(){ if (daily) { //Ensures that daily seeds are not in the range of user-enterable seeds seed = SPDSettings.lastDaily() + DungeonSeed.TOTAL_SEEDS; @@ -236,6 +232,13 @@ public class Dungeon { customSeedText = ""; seed = DungeonSeed.randomSeed(); } + } + + public static void init() { + + initialVersion = version = Game.versionCode; + challenges = SPDSettings.challenges(); + mobsToChampion = -1; Actor.clear(); Actor.resetNextID(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/HeroSelectScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/HeroSelectScene.java index 120bf74d0..0fa4e650f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/HeroSelectScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/HeroSelectScene.java @@ -136,6 +136,7 @@ public class HeroSelectScene extends PixelScene { Dungeon.hero = null; Dungeon.daily = Dungeon.dailyReplay = false; + Dungeon.initSeed(); ActionIndicator.clearAction(); InterlevelScene.mode = InterlevelScene.Mode.DESCEND; @@ -675,6 +676,7 @@ public class HeroSelectScene extends PixelScene { Dungeon.hero = null; Dungeon.daily = true; + Dungeon.initSeed(); ActionIndicator.clearAction(); InterlevelScene.mode = InterlevelScene.Mode.DESCEND; 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 76a703e5d..28cf981b9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java @@ -46,6 +46,7 @@ import com.watabou.noosa.Game; import com.watabou.noosa.Image; import com.watabou.utils.BArray; import com.watabou.utils.DeviceCompat; +import com.watabou.utils.GameMath; import com.watabou.utils.Random; import java.io.FileNotFoundException; @@ -99,14 +100,16 @@ public class InterlevelScene extends PixelScene { String loadingAsset; int loadingDepth; - final float scrollSpeed; fadeTime = NORM_FADE; + + long seed = Dungeon.seed; switch (mode){ default: loadingDepth = Dungeon.depth; break; case CONTINUE: loadingDepth = GamesInProgress.check(GamesInProgress.curSlot).depth; + seed = GamesInProgress.check(GamesInProgress.curSlot).seed; break; case DESCEND: if (Dungeon.hero == null){ @@ -143,11 +146,54 @@ public class InterlevelScene extends PixelScene { lastRegion = region; } - if (lastRegion == 1) loadingAsset = Assets.Splashes.SEWERS; - else if (lastRegion == 2) loadingAsset = Assets.Splashes.PRISON; - else if (lastRegion == 3) loadingAsset = Assets.Splashes.CAVES; - else if (lastRegion == 4) loadingAsset = Assets.Splashes.CITY; - else loadingAsset = Assets.Splashes.HALLS; + int loadingCenter = 400; + + //for portrait users, each run the splashes change what details they focus on + //TOD should these be uniform, or should some be more common? + Random.pushGenerator(seed+lastRegion); + switch (lastRegion){ + case 1: + loadingAsset = Assets.Splashes.SEWERS; + switch (Random.Int(3)){ + case 0: loadingCenter = 180; break; //focus on rats and left side + case 1: loadingCenter = 485; break; //focus on center pipe and door + case 2: loadingCenter = 700; break; //focus on right pipe + } + break; + case 2: + loadingAsset = Assets.Splashes.PRISON; + switch (Random.Int(3)){ + case 0: loadingCenter = 190; break; //focus on left skeleton + case 1: loadingCenter = 402; break; //focus on center arch + case 2: loadingCenter = 650; break; //focus on right stairs + } + break; + case 3: + loadingAsset = Assets.Splashes.CAVES; + switch (Random.Int(3)){ + case 0: loadingCenter = 120; break; //focus on far-left mining machinery + case 1: loadingCenter = 340; break; //focus on center gnoll groups + case 2: loadingCenter = 625; break; //focus on right gnoll + } + break; + case 4: + loadingAsset = Assets.Splashes.CITY; + switch (Random.Int(3)){ + case 0: loadingCenter = 275; break; //focus on left bookcases + case 1: loadingCenter = 460; break; //focus on center pathway + case 2: loadingCenter = 625; break; //focus on right bookcases + } + break; + case 5: default: + loadingAsset = Assets.Splashes.HALLS; + switch (Random.Int(3)){ + case 0: loadingCenter = 145; break; //focus on left arches + case 1: loadingCenter = 400; break; //focus on ripper demon + case 2: loadingCenter = 615; break; //focus on right arches + } + break; + } + Random.popGenerator(); if (DeviceCompat.isDebug()){ fadeTime = 0f; @@ -156,7 +202,12 @@ public class InterlevelScene extends PixelScene { Image background = new Image(loadingAsset); background.scale.set(Camera.main.height/background.height); - background.x = (Camera.main.width - background.width())/2f; + if (Camera.main.width >= background.width()){ + background.x = (Camera.main.width - background.width())/2f; + } else { + background.x = Camera.main.width/2f - loadingCenter*background.scale.x; + background.x = GameMath.gate(Camera.main.width - background.width(), background.x, 0); + } background.y = (Camera.main.height - background.height())/2f; PixelScene.align(background); add(background); @@ -172,7 +223,7 @@ public class InterlevelScene extends PixelScene { fadeRight.x = background.x + background.width() + 2; fadeRight.y = background.y + background.height(); fadeRight.angle = 180; - fadeRight.visible = background.x + background.width() < Camera.main.width; + fadeRight.visible = fadeLeft.visible; add(fadeRight); Image im = new Image(TextureCache.createGradient(0xAA000000, 0xBB000000, 0xCC000000, 0xDD000000, 0xFF000000)){