From adb7df68a628d4b5cca2267a088bb1ec95a68035 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 10 Mar 2022 16:10:21 -0500 Subject: [PATCH] v1.2.0: redesigned depth indicator, added a challenge indicator --- core/src/main/assets/interfaces/icons.png | Bin 14263 -> 14496 bytes core/src/main/assets/interfaces/menu_pane.png | Bin 265 -> 152 bytes .../main/assets/interfaces/status_pane.png | Bin 1008 -> 976 bytes .../scenes/GameScene.java | 2 +- .../scenes/RankingsScene.java | 2 +- .../scenes/StartScene.java | 2 +- .../shatteredpixeldungeon/ui/Icons.java | 64 ++++++++++- .../shatteredpixeldungeon/ui/MenuPane.java | 108 +++++++++++++++--- .../ui/changelist/v0_5_X_Changes.java | 2 +- .../ui/changelist/v0_6_X_Changes.java | 6 +- .../ui/changelist/v0_9_X_Changes.java | 7 +- .../windows/WndHeroInfo.java | 2 +- .../windows/WndJournal.java | 6 +- .../windows/WndStartGame.java | 2 +- 14 files changed, 169 insertions(+), 34 deletions(-) diff --git a/core/src/main/assets/interfaces/icons.png b/core/src/main/assets/interfaces/icons.png index c66cdd3e7012209fb383c42f13e49d052dd2b3d8..7cd66227ce949e49f7b01b9d86c7d162a2b5d526 100644 GIT binary patch delta 4705 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 E0CPv;-~a#s diff --git a/core/src/main/assets/interfaces/menu_pane.png b/core/src/main/assets/interfaces/menu_pane.png index c0a1ec4083a707a8721b08916f5879f339a41fa3..b28ddc181fdb220d92b0ffec02d4449054d32522 100644 GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3HGD8EPYeRJ^B)V@L&KG6U1fo;gSUU*$bo za$KSMAYa6uoLB!ZoM0$2I3cj;#*-FLZ=JxDtu5Tq##701qB7nO-vJw0E+(o9T$_AmKm(?e?eD% z4FCTB=Rfr0iMs?6;WlaD8 diff --git a/core/src/main/assets/interfaces/status_pane.png b/core/src/main/assets/interfaces/status_pane.png index 30eb2b239ba222e7e5ee70d2b66a7e0c5312038a..7a4daf723c72c15e1f74824b4b38571f62946f16 100644 GIT binary patch delta 684 zcmV;d0#p6)2hazQBpN1AOjJcaKskGWb7*W~RasDTcx*X4HG_zHu|W|5e~K1q82|tP z2y{|TQ~&?}|NsC00N#VWSpWb6QAtEWRCodH*#U=CQ5c8u=Y8KZa}(9}MOJ0|09#cB z2m*b-1r`9*h(|aHfJ_D1bcRK);;G%=Lhb%@VIyxf4r&qQUp5_HUd5G zXRv^wny3J% zR1a9&l2ZmODu7z`fC*V@D*)5#0p!V)#3w*)M#4g=N(ORP`NSFqXR=MH_l!yIQ0N__ zlDm|7%edqoMcyznxlgIrj7c6)=oO=qhm?8Axa1K4#7aMlBQKo95v zJ)j5lfF9r;Ai{a3f7BK@G0qZ=>i#j`Q$@jiPZb68eH{h!eH8`seH{h!ecz0FKo95v zJz!Yy*VH3mZX`s*Bf!`MfDhB?62OgP0J!{a@1NKB3qGTtqxH-HW{;4hiLX+A0mcrR|8L+=~rjE z;jDjw{snYTTWLq8q^8i^2cmxD?0pMtw zTmrap1^_p|xC9s*-1Y$qppF5-Gr-v3HV!a0xQ*8LIiSS`H?Qx1ZAb9=HUP|8ukW*Y zWJWd*)FCQd&V(xBM!1FTQ%w0TAM1#4=M3B3*&(**)XL{;Px1IGD=r5p$;_5JRg0JV!^u(F& yIO{LaUqBDU)j>of@b$u(iZlO!9>nl-*NrB`50000 0 ? 0 : 1); + menu.setPos( uiCamera.width-MenuPane.WIDTH, uiSize > 0 ? 0 : 1); add(menu); status = new StatusPane( SPDSettings.interfaceSize() > 0 ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/RankingsScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/RankingsScene.java index ade74d024..39d68e86b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/RankingsScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/RankingsScene.java @@ -204,7 +204,7 @@ public class RankingsScene extends PixelScene { if (rec.depth != 0){ depth.text( Integer.toString(rec.depth) ); depth.measure(); - steps.copy(Icons.DEPTH.get()); + steps.copy(Icons.STAIRS.get()); add(steps); add(depth); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/StartScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/StartScene.java index a34fcb5ef..32e48b577 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/StartScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/StartScene.java @@ -172,7 +172,7 @@ public class StartScene extends PixelScene { hero = new Image(info.heroClass.spritesheet(), 0, 15*info.armorTier, 12, 15); add(hero); - steps = new Image(Icons.get(Icons.DEPTH)); + steps = new Image(Icons.get(Icons.STAIRS)); add(steps); depth = new BitmapText(PixelScene.pixelFont); add(depth); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java index 98eec7f49..7184073a8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java @@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.ui; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass; +import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.watabou.noosa.Image; @@ -39,7 +40,7 @@ public enum Icons { SHPX, //rankings and hero select icons, spacing for 16x16 - DEPTH, + STAIRS, WARRIOR, MAGE, ROGUE, @@ -89,6 +90,15 @@ public enum Icons { SLEEP, ALERT, LOST, + DEPTH, + DEPTH_CHASM, + DEPTH_WATER, + DEPTH_GRASS, + DEPTH_DARK, + DEPTH_LARGE, + DEPTH_TRAPS, + DEPTH_SECRETS, + CHAL_COUNT, //icons that appear in the about screen, variable spacing LIBGDX, @@ -133,7 +143,7 @@ public enum Icons { icon.frame( icon.texture.uvRectBySize( 119, 0, 16, 16 ) ); break; - case DEPTH: + case STAIRS: icon.frame( icon.texture.uvRectBySize( 0, 16, 13, 16 ) ); break; case WARRIOR: @@ -270,7 +280,34 @@ public enum Icons { icon.frame( icon.texture.uvRectBySize( 32, 72, 8, 8 ) ); break; case LOST: - icon.frame( icon.texture.uvRectBySize( 32, 72, 8, 8 ) ); + icon.frame( icon.texture.uvRectBySize( 40, 72, 8, 8 ) ); + break; + case DEPTH: + icon.frame( icon.texture.uvRectBySize( 48, 64, 6, 7 ) ); + break; + case DEPTH_CHASM: + icon.frame( icon.texture.uvRectBySize( 56, 64, 7, 7 ) ); + break; + case DEPTH_WATER: + icon.frame( icon.texture.uvRectBySize( 64, 64, 7, 7 ) ); + break; + case DEPTH_GRASS: + icon.frame( icon.texture.uvRectBySize( 72, 64, 7, 7 ) ); + break; + case DEPTH_DARK: + icon.frame( icon.texture.uvRectBySize( 80, 64, 7, 7 ) ); + break; + case DEPTH_LARGE: + icon.frame( icon.texture.uvRectBySize( 88, 64, 7, 7 ) ); + break; + case DEPTH_TRAPS: + icon.frame( icon.texture.uvRectBySize( 96, 64, 7, 7 ) ); + break; + case DEPTH_SECRETS: + icon.frame( icon.texture.uvRectBySize( 104, 64, 7, 7 ) ); + break; + case CHAL_COUNT: + icon.frame( icon.texture.uvRectBySize( 48, 72, 7, 7 ) ); break; case LIBGDX: @@ -323,4 +360,25 @@ public enum Icons { return null; } } + + public static Image get(Level.Feeling feeling){ + switch (feeling){ + case NONE: default: + return get(DEPTH); + case CHASM: + return get(DEPTH_CHASM); + case WATER: + return get(DEPTH_WATER); + case GRASS: + return get(DEPTH_GRASS); + case DARK: + return get(DEPTH_DARK); + case LARGE: + return get(DEPTH_LARGE); + case TRAPS: + return get(DEPTH_TRAPS); + case SECRETS: + return get(DEPTH_SECRETS); + } + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/MenuPane.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/MenuPane.java index 601b74b47..223db34ba 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/MenuPane.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/MenuPane.java @@ -22,6 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.ui; import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.Challenges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.SPDAction; import com.shatteredpixel.shatteredpixeldungeon.items.Item; @@ -29,6 +30,8 @@ import com.shatteredpixel.shatteredpixeldungeon.journal.Document; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; +import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; +import com.shatteredpixel.shatteredpixeldungeon.windows.WndChallenges; import com.shatteredpixel.shatteredpixeldungeon.windows.WndGame; import com.shatteredpixel.shatteredpixeldungeon.windows.WndJournal; import com.shatteredpixel.shatteredpixeldungeon.windows.WndKeyBindings; @@ -44,7 +47,14 @@ public class MenuPane extends Component { private Image bg; - private BitmapText depth; + private Image depthIcon; + private BitmapText depthText; + private Button depthButton; + + private Image challengeIcon; + private BitmapText challengeText; + private Button challengeButton; + private JournalButton btnJournal; private MenuButton btnMenu; @@ -54,7 +64,7 @@ public class MenuPane extends Component { private DangerIndicator danger; - public static final int WIDTH = 50; + public static final int WIDTH = 32; @Override protected void createChildren() { @@ -63,10 +73,60 @@ public class MenuPane extends Component { bg = new Image(Assets.Interfaces.MENU); add(bg); - depth = new BitmapText( Integer.toString( Dungeon.depth ), PixelScene.pixelFont); - depth.hardlight( 0xCACFC2 ); - depth.measure(); - add( depth ); + depthIcon = Icons.get(Dungeon.level.feeling); + add(depthIcon); + + depthText = new BitmapText( Integer.toString( Dungeon.depth ), PixelScene.pixelFont); + depthText.hardlight( 0xCACFC2 ); + depthText.measure(); + add( depthText ); + + depthButton = new Button(){ + @Override + protected String hoverText() { + switch (Dungeon.level.feeling) { + case CHASM: return Messages.get(GameScene.class, "chasm"); + case WATER: return Messages.get(GameScene.class, "water"); + case GRASS: return Messages.get(GameScene.class, "grass"); + case DARK: return Messages.get(GameScene.class, "dark"); + case LARGE: return Messages.get(GameScene.class, "large"); + case TRAPS: return Messages.get(GameScene.class, "traps"); + case SECRETS: return Messages.get(GameScene.class, "secrets"); + } + return null; + } + + @Override + protected void onClick() { + super.onClick(); + //just open journal for now, maybe have it open landmarks after expanding that page? + GameScene.show( new WndJournal() ); + } + }; + add(depthButton); + + if (Challenges.activeChallenges() > 0){ + challengeIcon = Icons.get(Icons.CHAL_COUNT); + add(challengeIcon); + + challengeText = new BitmapText( Integer.toString( Challenges.activeChallenges() ), PixelScene.pixelFont); + challengeText.hardlight( 0xCACFC2 ); + challengeText.measure(); + add( challengeText ); + + challengeButton = new Button(){ + @Override + protected void onClick() { + GameScene.show(new WndChallenges(Dungeon.challenges, false)); + } + + @Override + protected String hoverText() { + return Messages.get(WndChallenges.class, "title"); + } + }; + add(challengeButton); + } btnJournal = new JournalButton(); add( btnJournal ); @@ -91,14 +151,34 @@ public class MenuPane extends Component { bg.x = x; bg.y = y; - depth.x = x + 14.5f - depth.width() / 2f; - depth.y = y + 7f - depth.baseLine() / 2f; - PixelScene.align(depth); - - btnJournal.setPos( x + WIDTH - 42, y ); - btnMenu.setPos( x + WIDTH - btnMenu.width(), y ); + btnJournal.setPos( btnMenu.left() - btnJournal.width() + 2, y ); + + depthIcon.x = btnJournal.left() - 7 + (7 - depthIcon.width())/2f - 0.1f; + depthIcon.y = y + 2; + PixelScene.align(depthIcon); + + depthText.scale.set(PixelScene.align(0.5f)); + depthText.x = depthIcon.x + (depthIcon.width() - depthText.width())/2f; + depthText.y = depthIcon.y + depthIcon.height(); + PixelScene.align(depthText); + + depthButton.setRect(depthIcon.x, depthIcon.y, depthIcon.width(), depthIcon.height() + depthText.height()); + + if (challengeIcon != null){ + challengeIcon.x = btnJournal.left() - 14 + (7 - challengeIcon.width())/2f - 0.1f; + challengeIcon.y = y + 2; + PixelScene.align(challengeIcon); + + challengeText.scale.set(PixelScene.align(0.5f)); + challengeText.x = challengeIcon.x + (challengeIcon.width() - challengeText.width())/2f; + challengeText.y = challengeIcon.y + challengeIcon.height(); + PixelScene.align(challengeText); + + challengeButton.setRect(challengeIcon.x, challengeIcon.y, challengeIcon.width(), challengeIcon.height() + challengeText.height()); + } + version.scale.set(PixelScene.align(0.5f)); version.measure(); version.x = x + WIDTH - version.width(); @@ -134,7 +214,7 @@ public class MenuPane extends Component { public JournalButton() { super(); - width = bg.width + 13; //includes the depth display to the left + width = bg.width + 4; height = bg.height + 4; } @@ -162,7 +242,7 @@ public class MenuPane extends Component { protected void layout() { super.layout(); - bg.x = x + 13; + bg.x = x + 2; bg.y = y + 2; journalIcon.x = bg.x + (bg.width() - journalIcon.width())/2f; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_5_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_5_X_Changes.java index 2c86a060b..a69881b3f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_5_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_5_X_Changes.java @@ -52,7 +52,7 @@ public class v0_5_X_Changes { "\n" + "v0.5.0 was also Shattered's longest-developed update yet. While I don't think there was much I could do about this for v0.5.0 and v0.6.0, it started an unfortunate trend of major updates taking up to half a year! I eventually broke this trend in v0.9.0 by splitting these larger updates into smaller parts.")); - changes.addButton( new ChangeButton( Icons.get(Icons.DEPTH), "New Dungeon Visual Style!", + changes.addButton( new ChangeButton( Icons.get(Icons.STAIRS), "New Dungeon Visual Style!", "_-_ Walls and some terrain now have depth\n" + "_-_ Characters & items are raised & cast shadows\n" + "_-_ Added a visible tile grid in the settings menu")); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_6_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_6_X_Changes.java index c69347f0e..e81cb0106 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_6_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_6_X_Changes.java @@ -513,7 +513,7 @@ public class v0_6_X_Changes { "\n" + "Lastly, v0.6.2 (and v0.6.1) included some important AI changes that made character behaviour much more consistent when allies are concerned. This paved the way for ally additions in future updates.")); - changes.addButton( new ChangeButton( Icons.get(Icons.DEPTH), "Dungeon Secrets!", + changes.addButton( new ChangeButton( Icons.get(Icons.STAIRS), "Dungeon Secrets!", "The secrets of the dungeon have been totally redesigned!\n\n" + "_-_ Regular rooms can no longer be totally hidden\n\n" + "_-_ 12 new secret rooms added, which are always hidden\n\n" + @@ -711,7 +711,7 @@ public class v0_6_X_Changes { "_-_ Reduced the numbers of games needed for the 'games played' badges from 10/100/500/2000 to 10/50/250/1000\n\n" + "_-_ Blank badges shown in the badges menu are now accurate to how many badges you have left to unlock.")); - changes.addButton( new ChangeButton( Icons.get(Icons.DEPTH), "Dungeon Changes", + changes.addButton( new ChangeButton( Icons.get(Icons.STAIRS), "Dungeon Changes", "_-_ Added 5 new regional rooms\n" + "_-_ Added two new uncommon room types\n" + "_-_ Added a new type of tunnel room\n\n" + @@ -869,7 +869,7 @@ public class v0_6_X_Changes { "\n" + "I feel v0.6.0 also represents the start of another era in Shattered's development. While Shattered was still missing some big updates (most notably v0.8.0), after v0.6.0 Shattered started to resemble its current incarnation more than the original Pixel Dungeon.")); - changes.addButton( new ChangeButton( Icons.get(Icons.DEPTH), "Levelgen Overhaul!", + changes.addButton( new ChangeButton( Icons.get(Icons.STAIRS), "Levelgen Overhaul!", "Level creation algorithm overhauled!\n\n" + "_-_ Levels are now much less box-shaped\n" + "_-_ Sewers are now smaller, caves+ are now larger\n" + diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_9_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_9_X_Changes.java index 077978f11..a7e540a1b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_9_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_9_X_Changes.java @@ -27,11 +27,9 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Spinner; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.ChaliceOfBlood; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CloakOfShadows; -import com.shatteredpixel.shatteredpixeldungeon.items.bombs.WoollyBomb; import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfEnergy; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfFrost; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfTransfusion; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.ChangesScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; @@ -40,7 +38,6 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.GolemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.SpawnerSprite; -import com.shatteredpixel.shatteredpixeldungeon.sprites.SpectralNecromancerSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.SpinnerSprite; import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; import com.shatteredpixel.shatteredpixeldungeon.ui.TalentIcon; @@ -92,7 +89,7 @@ public class v0_9_X_Changes { changes.hardlight(CharSprite.WARNING); changeInfos.add(changes); - changes.addButton(new ChangeButton(Icons.get(Icons.DEPTH), "Dungeon Changes", + changes.addButton(new ChangeButton(Icons.get(Icons.STAIRS), "Dungeon Changes", "I'm making some slight tweaks to level sizes and layouts, to make the game overall a little shorter, and to put a bit more emphasis on the final region:\n\n" + "_-_ Standard room count down by roughly 10/20/15/15/5%, for each region\n" + "_-_ Connection room frequency down by ~25%\n\n" + @@ -399,7 +396,7 @@ public class v0_9_X_Changes { "The second talent tier is similar to the first, but talent powers are much less focused on the early game. Expect effects that are useful all game long.\n\n" + "Look forward to tier 3 of the talent system coming in v0.9.2, which will span levels 13-20.")); - changes.addButton(new ChangeButton(Icons.get(Icons.DEPTH), "Levelgen Improvements!", + changes.addButton(new ChangeButton(Icons.get(Icons.STAIRS), "Levelgen Improvements!", "_The game's level generation system has received a number of improvements!:_\n\n" + "_-_ A new region specific room has been added to each dungeon region, 5 in total.\n" + "_-_ Three new level feelings have been added: large, secrets, and traps.\n" + diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHeroInfo.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHeroInfo.java index 6bde0da7e..5e2a1360f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHeroInfo.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHeroInfo.java @@ -173,7 +173,7 @@ public class WndHeroInfo extends WndTabbed { break; case ROGUE: icons = new Image[]{ new ItemSprite(ItemSpriteSheet.ARTIFACT_CLOAK), - Icons.get(Icons.DEPTH), + Icons.get(Icons.STAIRS), new ItemSprite(ItemSpriteSheet.DAGGER), new ItemSprite(ItemSpriteSheet.SCROLL_ISAZ)}; break; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java index 217a2eba9..0e33f0978 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java @@ -110,7 +110,7 @@ public class WndJournal extends WndTabbed { if (value) last_index = 1; } }, - new IconTab( Icons.get(Icons.DEPTH) ) { + new IconTab( Icons.get(Icons.STAIRS) ) { protected void select( boolean value ) { super.select( value ); notesTab.active = notesTab.visible = value; @@ -550,7 +550,7 @@ public class WndJournal extends WndTabbed { pos += Math.max(ITEM_HEIGHT, title.height()); } for(Notes.Record rec : keys){ - ListItem item = new ListItem( Icons.get(Icons.DEPTH), + ListItem item = new ListItem( Icons.get(Icons.STAIRS), Messages.titleCase(rec.desc()), rec.depth() ); item.setRect( 0, pos, width(), ITEM_HEIGHT ); content.add( item ); @@ -575,7 +575,7 @@ public class WndJournal extends WndTabbed { pos += Math.max(ITEM_HEIGHT, title.height()); } for (Notes.Record rec : landmarks) { - ListItem item = new ListItem( Icons.get(Icons.DEPTH), + ListItem item = new ListItem( Icons.get(Icons.STAIRS), Messages.titleCase(rec.desc()), rec.depth() ); item.setRect( 0, pos, width(), ITEM_HEIGHT ); content.add( item ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndStartGame.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndStartGame.java index 981ca6351..79f928e72 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndStartGame.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndStartGame.java @@ -325,7 +325,7 @@ public class WndStartGame extends Window { case ROGUE: heroItem.icon(new ItemSprite(ItemSpriteSheet.ARTIFACT_CLOAK, null)); heroLoadout.icon(new ItemSprite(ItemSpriteSheet.DAGGER, null)); - heroMisc.icon(Icons.get(Icons.DEPTH)); + heroMisc.icon(Icons.get(Icons.STAIRS)); break; case HUNTRESS: heroItem.icon(new ItemSprite(ItemSpriteSheet.SPIRIT_BOW, null));