diff --git a/core/src/main/assets/interfaces/icons.png b/core/src/main/assets/interfaces/icons.png index 46efa6a32..8da9dc914 100644 Binary files a/core/src/main/assets/interfaces/icons.png and b/core/src/main/assets/interfaces/icons.png differ 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 705c64c08..120bf74d0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/HeroSelectScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/HeroSelectScene.java @@ -724,14 +724,14 @@ public class HeroSelectScene extends PixelScene { ShatteredPixelDungeon.scene().addToFront(new WndChallenges(SPDSettings.challenges(), true) { public void onBackPressed() { super.onBackPressed(); - icon(Icons.get(SPDSettings.challenges() > 0 ? Icons.CHALLENGE_ON : Icons.CHALLENGE_OFF)); + icon(Icons.get(SPDSettings.challenges() > 0 ? Icons.CHALLENGE_COLOR : Icons.CHALLENGE_GREY)); updateOptionsColor(); } } ); } }; challengeButton.leftJustify = true; - challengeButton.icon(Icons.get(SPDSettings.challenges() > 0 ? Icons.CHALLENGE_ON : Icons.CHALLENGE_OFF)); + challengeButton.icon(Icons.get(SPDSettings.challenges() > 0 ? Icons.CHALLENGE_COLOR : Icons.CHALLENGE_GREY)); add(challengeButton); buttons.add(challengeButton); } 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 d746ebe45..bc6edd5ee 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java @@ -26,11 +26,14 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.watabou.noosa.Image; +import com.watabou.utils.RectF; public enum Icons { - //title screen icons, variable sizes, spacing for 17x16 + //slightly larger title screen icons, spacing for 17x16 ENTER, GOLD, RANKINGS, @@ -41,14 +44,6 @@ public enum Icons { SHPX, JOURNAL, - //rankings and hero select icons, spacing for 16x16 - STAIRS, - WARRIOR, - MAGE, - ROGUE, - HUNTRESS, - DUELIST, - //grey icons, mainly used for buttons, spacing for 16x16 EXIT, DISPLAY, //2 separate images, changes based on orientation @@ -60,51 +55,45 @@ public enum Icons { CONTROLLER, KEYBOARD, STATS, - CHALLENGE_OFF, - CHALLENGE_ON, - RENAME_OFF, - RENAME_ON, + CHALLENGE_GREY, + SCROLL_GREY, SEED, LEFTARROW, RIGHTARROW, CALENDAR, - //misc icons, mainly used for buttons, spacing for 16x16 until the smaller icons at the end + //misc larger icons, mainly used for buttons, tabs, and journal, spacing for 16x16 + TARGET, + INFO, + WARNING, UNCHECKED, CHECKED, CLOSE, PLUS, REPEAT, ARROW, - INFO, - WARNING, + CHALLENGE_COLOR, + SCROLL_COLOR, + COPY, + PASTE, + + STAIRS, BACKPACK_LRG, TALENT, MAGNIFY, SNAKE, BUFFS, - ENERGY, - COPY, - PASTE, CATALOG, ALCHEMY, - COIN_SML, - ENERGY_SML, - BACKPACK, - SEED_POUCH, - SCROLL_HOLDER, - WAND_HOLSTER, - POTION_BANDOLIER, - //icons that appear in the game itself, variable spacing - TARGET, + //smaller icons, variable spacing SKULL, BUSY, COMPASS, SLEEP, ALERT, LOST, - DEPTH, //depth icons have two variants, for regular and seeded runs + DEPTH, //depth icons have three variants, for regular, seeded, daily, and daily replay runs DEPTH_CHASM, DEPTH_WATER, DEPTH_GRASS, @@ -113,6 +102,13 @@ public enum Icons { DEPTH_TRAPS, DEPTH_SECRETS, CHAL_COUNT, + COIN_SML, + ENERGY_SML, + BACKPACK, + SEED_POUCH, + SCROLL_HOLDER, + WAND_HOLSTER, + POTION_BANDOLIER, //icons that appear in the about screen, variable spacing LIBGDX, @@ -160,27 +156,8 @@ public enum Icons { icon.frame( icon.texture.uvRectBySize( 136, 0, 17, 16 ) ); break; - case STAIRS: - icon.frame( icon.texture.uvRectBySize( 0, 16, 13, 16 ) ); - break; - case WARRIOR: - icon.frame( icon.texture.uvRectBySize( 16, 16, 9, 15 ) ); - break; - case MAGE: - icon.frame( icon.texture.uvRectBySize( 32, 16, 15, 14 ) ); - break; - case ROGUE: - icon.frame( icon.texture.uvRectBySize( 48, 16, 9, 15 ) ); - break; - case HUNTRESS: - icon.frame( icon.texture.uvRectBySize( 64, 16, 16, 16 ) ); - break; - case DUELIST: - icon.frame( icon.texture.uvRectBySize( 80, 16, 13, 14 ) ); - break; - case EXIT: - icon.frame( icon.texture.uvRectBySize( 0, 32, 15, 11 ) ); + icon.frame( icon.texture.uvRectBySize( 0, 16, 15, 11 ) ); break; case DISPLAY: if (!PixelScene.landscape()){ @@ -189,177 +166,178 @@ public enum Icons { return get(DISPLAY_LAND); } case DISPLAY_PORT: - icon.frame( icon.texture.uvRectBySize( 16, 32, 12, 16 ) ); + icon.frame( icon.texture.uvRectBySize( 16, 16, 12, 16 ) ); break; case DISPLAY_LAND: - icon.frame( icon.texture.uvRectBySize( 32, 32, 16, 12 ) ); + icon.frame( icon.texture.uvRectBySize( 32, 16, 16, 12 ) ); break; case DATA: - icon.frame( icon.texture.uvRectBySize( 48, 32, 14, 15 ) ); + icon.frame( icon.texture.uvRectBySize( 48, 16, 14, 15 ) ); break; case AUDIO: - icon.frame( icon.texture.uvRectBySize( 64, 32, 14, 14 ) ); + icon.frame( icon.texture.uvRectBySize( 64, 16, 14, 14 ) ); break; case LANGS: - icon.frame( icon.texture.uvRectBySize( 80, 32, 14, 11 ) ); + icon.frame( icon.texture.uvRectBySize( 80, 16, 14, 11 ) ); break; case CONTROLLER: - icon.frame( icon.texture.uvRectBySize( 96, 32, 16, 12 ) ); + icon.frame( icon.texture.uvRectBySize( 96, 16, 16, 12 ) ); break; case KEYBOARD: - icon.frame( icon.texture.uvRectBySize( 112, 32, 15, 12 ) ); + icon.frame( icon.texture.uvRectBySize( 112, 16, 15, 12 ) ); break; case STATS: - icon.frame( icon.texture.uvRectBySize( 128, 32, 16, 13 ) ); + icon.frame( icon.texture.uvRectBySize( 128, 16, 16, 13 ) ); break; - case CHALLENGE_OFF: - icon.frame( icon.texture.uvRectBySize( 144, 32, 15, 12 ) ); + case CHALLENGE_GREY: + icon.frame( icon.texture.uvRectBySize( 144, 16, 15, 12 ) ); break; - case CHALLENGE_ON: - icon.frame( icon.texture.uvRectBySize( 160, 32, 15, 12 ) ); - break; - case RENAME_OFF: - icon.frame( icon.texture.uvRectBySize( 176, 32, 15, 14 ) ); - break; - case RENAME_ON: - icon.frame( icon.texture.uvRectBySize( 192, 32, 15, 14 ) ); + case SCROLL_GREY: + icon.frame( icon.texture.uvRectBySize( 160, 16, 15, 14 ) ); break; case SEED: - icon.frame( icon.texture.uvRectBySize( 208, 32, 15, 10 ) ); + icon.frame( icon.texture.uvRectBySize( 176, 16, 15, 10 ) ); break; case LEFTARROW: - icon.frame( icon.texture.uvRectBySize( 224, 32, 14, 9 ) ); + icon.frame( icon.texture.uvRectBySize( 192, 16, 14, 9 ) ); break; case RIGHTARROW: - icon.frame( icon.texture.uvRectBySize( 240, 32, 14, 9 ) ); + icon.frame( icon.texture.uvRectBySize( 208, 16, 14, 9 ) ); break; case CALENDAR: - icon.frame( icon.texture.uvRectBySize( 240, 16, 15, 12 ) ); - break; - - case UNCHECKED: - icon.frame( icon.texture.uvRectBySize( 0, 48, 12, 12 ) ); - break; - case CHECKED: - icon.frame( icon.texture.uvRectBySize( 16, 48, 12, 12 ) ); - break; - case CLOSE: - icon.frame( icon.texture.uvRectBySize( 32, 48, 11, 11 ) ); - break; - case PLUS: - icon.frame( icon.texture.uvRectBySize( 48, 48, 11, 11 ) ); - break; - case REPEAT: - icon.frame( icon.texture.uvRectBySize( 64, 48, 11, 11 ) ); - break; - case ARROW: - icon.frame( icon.texture.uvRectBySize( 80, 48, 11, 11 ) ); - break; - case INFO: - icon.frame( icon.texture.uvRectBySize( 96, 48, 14, 14 ) ); - break; - case WARNING: - icon.frame( icon.texture.uvRectBySize( 112, 48, 14, 14 ) ); - break; - case BACKPACK_LRG: - icon.frame( icon.texture.uvRectBySize( 128, 48, 16, 16 ) ); - break; - case TALENT: - icon.frame( icon.texture.uvRectBySize( 144, 48, 13, 13 ) ); - break; - case MAGNIFY: - icon.frame( icon.texture.uvRectBySize( 160, 48, 14, 14 ) ); - break; - case SNAKE: - icon.frame( icon.texture.uvRectBySize( 176, 48, 9, 13 ) ); - break; - case BUFFS: - icon.frame( icon.texture.uvRectBySize( 192, 48, 16, 15 ) ); - break; - case ENERGY: - icon.frame( icon.texture.uvRectBySize( 208, 48, 16, 16 ) ); - break; - case COPY: - icon.frame( icon.texture.uvRectBySize( 224, 48, 13, 13 ) ); - break; - case PASTE: - icon.frame( icon.texture.uvRectBySize( 240, 48, 13, 13 ) ); - break; - case CATALOG: - icon.frame( icon.texture.uvRectBySize( 240, 64, 13, 16 ) ); - break; - case ALCHEMY: - icon.frame( icon.texture.uvRectBySize( 224, 64, 16, 16 ) ); - break; - case COIN_SML: - icon.frame( icon.texture.uvRectBySize( 192, 80, 7, 7 ) ); - break; - case ENERGY_SML: - icon.frame( icon.texture.uvRectBySize( 192, 88, 8, 7 ) ); - break; - case BACKPACK: - icon.frame( icon.texture.uvRectBySize( 201, 80, 10, 10 ) ); - break; - case SCROLL_HOLDER: - icon.frame( icon.texture.uvRectBySize( 211, 80, 10, 10 ) ); - break; - case SEED_POUCH: - icon.frame( icon.texture.uvRectBySize( 221, 80, 10, 10 ) ); - break; - case WAND_HOLSTER: - icon.frame( icon.texture.uvRectBySize( 231, 80, 10, 10 ) ); - break; - case POTION_BANDOLIER: - icon.frame( icon.texture.uvRectBySize( 241, 80, 10, 10 ) ); + icon.frame( icon.texture.uvRectBySize( 224, 16, 15, 12 ) ); break; case TARGET: - icon.frame( icon.texture.uvRectBySize( 0, 64, 16, 16 ) ); + icon.frame( icon.texture.uvRectBySize( 0, 32, 16, 16 ) ); break; + case INFO: + icon.frame( icon.texture.uvRectBySize( 16, 32, 14, 14 ) ); + break; + case WARNING: + icon.frame( icon.texture.uvRectBySize( 32, 32, 14, 14 ) ); + break; + case UNCHECKED: + icon.frame( icon.texture.uvRectBySize( 48, 32, 12, 12 ) ); + break; + case CHECKED: + icon.frame( icon.texture.uvRectBySize( 64, 32, 12, 12 ) ); + break; + case CLOSE: + icon.frame( icon.texture.uvRectBySize( 80, 32, 11, 11 ) ); + break; + case PLUS: + icon.frame( icon.texture.uvRectBySize( 96, 32, 11, 11 ) ); + break; + case REPEAT: + icon.frame( icon.texture.uvRectBySize( 112, 32, 11, 11 ) ); + break; + case ARROW: + icon.frame( icon.texture.uvRectBySize( 128, 32, 11, 11 ) ); + break; + case CHALLENGE_COLOR: + icon.frame( icon.texture.uvRectBySize( 144, 32, 15, 12 ) ); + break; + case SCROLL_COLOR: + icon.frame( icon.texture.uvRectBySize( 160, 32, 15, 14 ) ); + break; + case COPY: + icon.frame( icon.texture.uvRectBySize( 176, 32, 13, 13 ) ); + break; + case PASTE: + icon.frame( icon.texture.uvRectBySize( 192, 32, 13, 13 ) ); + break; + + case STAIRS: + icon.frame( icon.texture.uvRectBySize( 0, 48, 13, 16 ) ); + break; + case BACKPACK_LRG: + icon.frame( icon.texture.uvRectBySize( 16, 48, 16, 16 ) ); + break; + case TALENT: + icon.frame( icon.texture.uvRectBySize( 32, 48, 13, 13 ) ); + break; + case MAGNIFY: + icon.frame( icon.texture.uvRectBySize( 48, 48, 14, 14 ) ); + break; + case SNAKE: + icon.frame( icon.texture.uvRectBySize( 64, 48, 9, 13 ) ); + break; + case BUFFS: + icon.frame( icon.texture.uvRectBySize( 80, 48, 16, 15 ) ); + break; + case CATALOG: + icon.frame( icon.texture.uvRectBySize( 96, 48, 13, 16 ) ); + break; + case ALCHEMY: + icon.frame( icon.texture.uvRectBySize( 112, 48, 16, 16 ) ); + break; + case SKULL: - icon.frame( icon.texture.uvRectBySize( 16, 64, 8, 8 ) ); + icon.frame( icon.texture.uvRectBySize( 0, 64, 8, 8 ) ); break; case BUSY: - icon.frame( icon.texture.uvRectBySize( 24, 64, 8, 8 ) ); + icon.frame( icon.texture.uvRectBySize( 8, 64, 8, 8 ) ); break; case COMPASS: - icon.frame( icon.texture.uvRectBySize( 16, 72, 7, 5 ) ); + icon.frame( icon.texture.uvRectBySize( 0, 72, 7, 5 ) ); break; case SLEEP: - icon.frame( icon.texture.uvRectBySize( 32, 64, 9, 8 ) ); + icon.frame( icon.texture.uvRectBySize( 16, 64, 9, 8 ) ); break; case ALERT: - icon.frame( icon.texture.uvRectBySize( 32, 72, 8, 8 ) ); + icon.frame( icon.texture.uvRectBySize( 16, 72, 8, 8 ) ); break; case LOST: - icon.frame( icon.texture.uvRectBySize( 40, 72, 8, 8 ) ); + icon.frame( icon.texture.uvRectBySize( 24, 72, 8, 8 ) ); break; case DEPTH: - icon.frame( icon.texture.uvRectBySize( 48, 64 + runTypeOfs(), 6, 7 ) ); + icon.frame( icon.texture.uvRectBySize( 32 + runTypeOfsX(), 64 + runTypeOfsY(), 6, 7 ) ); break; case DEPTH_CHASM: - icon.frame( icon.texture.uvRectBySize( 56, 64 + runTypeOfs(), 7, 7 ) ); + icon.frame( icon.texture.uvRectBySize( 40 + runTypeOfsX(), 64 + runTypeOfsY(), 7, 7 ) ); break; case DEPTH_WATER: - icon.frame( icon.texture.uvRectBySize( 64, 64 + runTypeOfs(), 7, 7 ) ); + icon.frame( icon.texture.uvRectBySize( 48 + runTypeOfsX(), 64 + runTypeOfsY(), 7, 7 ) ); break; case DEPTH_GRASS: - icon.frame( icon.texture.uvRectBySize( 72, 64 + runTypeOfs(), 7, 7 ) ); + icon.frame( icon.texture.uvRectBySize( 56 + runTypeOfsX(), 64 + runTypeOfsY(), 7, 7 ) ); break; case DEPTH_DARK: - icon.frame( icon.texture.uvRectBySize( 80, 64 + runTypeOfs(), 7, 7 ) ); + icon.frame( icon.texture.uvRectBySize( 64 + runTypeOfsX(), 64 + runTypeOfsY(), 7, 7 ) ); break; case DEPTH_LARGE: - icon.frame( icon.texture.uvRectBySize( 88, 64 + runTypeOfs(), 7, 7 ) ); + icon.frame( icon.texture.uvRectBySize( 72 + runTypeOfsX(), 64 + runTypeOfsY(), 7, 7 ) ); break; case DEPTH_TRAPS: - icon.frame( icon.texture.uvRectBySize( 96, 64 + runTypeOfs(), 7, 7 ) ); + icon.frame( icon.texture.uvRectBySize( 80 + runTypeOfsX(), 64 + runTypeOfsY(), 7, 7 ) ); break; case DEPTH_SECRETS: - icon.frame( icon.texture.uvRectBySize( 104, 64 + runTypeOfs(), 7, 7 ) ); + icon.frame( icon.texture.uvRectBySize( 88 + runTypeOfsX(), 64 + runTypeOfsY(), 7, 7 ) ); break; case CHAL_COUNT: - icon.frame( icon.texture.uvRectBySize( 112, 64, 7, 7 ) ); + icon.frame( icon.texture.uvRectBySize( 160, 64, 7, 7 ) ); + break; + case COIN_SML: + icon.frame( icon.texture.uvRectBySize( 168, 64, 7, 7 ) ); + break; + case ENERGY_SML: + icon.frame( icon.texture.uvRectBySize( 168, 72, 8, 7 ) ); + break; + case BACKPACK: + icon.frame( icon.texture.uvRectBySize( 176, 64, 10, 10 ) ); + break; + case SCROLL_HOLDER: + icon.frame( icon.texture.uvRectBySize( 186, 64, 10, 10 ) ); + break; + case SEED_POUCH: + icon.frame( icon.texture.uvRectBySize( 196, 64, 10, 10 ) ); + break; + case WAND_HOLSTER: + icon.frame( icon.texture.uvRectBySize( 206, 64, 10, 10 ) ); + break; + case POTION_BANDOLIER: + icon.frame( icon.texture.uvRectBySize( 216, 64, 10, 10 ) ); break; case LIBGDX: @@ -398,14 +376,12 @@ public enum Icons { return icon; } - private static int runTypeOfs(){ - if (Dungeon.daily){ - if (Dungeon.dailyReplay){ - return 24; - } else { - return 16; - } - } else if (!Dungeon.customSeedText.isEmpty()){ + private static int runTypeOfsX(){ + return Dungeon.daily ? 64 : 0; + } + + private static int runTypeOfsY(){ + if (Dungeon.dailyReplay || !Dungeon.customSeedText.isEmpty()){ return 8; } else { return 0; @@ -415,15 +391,20 @@ public enum Icons { public static Image get( HeroClass cl ) { switch (cl) { case WARRIOR: - return get( Icons.WARRIOR ); + return new ItemSprite(ItemSpriteSheet.SEAL); case MAGE: - return get( Icons.MAGE ); + //mage's staff normally has 2 pixels extra at the top for particle effects, we chop that off here + Image result = new ItemSprite(ItemSpriteSheet.MAGES_STAFF); + RectF frame = result.frame(); + frame.top += frame.height()/8f; + result.frame(frame); + return result; case ROGUE: - return get( Icons.ROGUE ); + return new ItemSprite(ItemSpriteSheet.ARTIFACT_CLOAK); case HUNTRESS: - return get( Icons.HUNTRESS ); + return new ItemSprite(ItemSpriteSheet.SPIRIT_BOW); case DUELIST: - return get( Icons.DUELIST ); + return new ItemSprite(ItemSpriteSheet.RAPIER); default: return null; } 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 429b8f5c7..c324aa19e 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 @@ -218,7 +218,7 @@ public class v0_6_X_Changes { "\n" + "I also made some important changes to challenges in v0.6.4, primarily to make stacked challenge games a bit easier. This made high-challenge games more feasible without extreme luck, which led to a big increase in challenge interest among highly skilled players.")); - changes.addButton( new ChangeButton(Icons.get(Icons.CHALLENGE_ON), "Challenges", + changes.addButton( new ChangeButton(Icons.get(Icons.CHALLENGE_COLOR), "Challenges", "Challenges have received several major changes, with the goal of making them more fair and interesting.\n" + "\n" + "_-_ Challenges now have descriptions\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 aac394da8..67c1483a7 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 @@ -77,7 +77,7 @@ public class v0_9_X_Changes { "After the defeating the fourth boss, the player now gets to choose between one of three abilities for each hero. Armor abilities also charge much faster, and can be further improved via tier four talents!\n\n" + "Each armor ability has three talents, plus one charge-speed talent that's shared between them. These talents all take up to 4 points, and there are up to 10 points available in tier 4, for levels 21-30.")); - changes.addButton( new ChangeButton(Icons.get(Icons.CHALLENGE_ON), "New Challenge!", + changes.addButton( new ChangeButton(Icons.get(Icons.CHALLENGE_COLOR), "New Challenge!", "A new challenge has been added: _Badder Bosses!_\n\n" + "This challenge is a followup to Hostile Champions in a lot of ways, making the dungeon's bosses much stronger, instead of the enemies. Early bosses like Goo are only a touch tougher, but lategame bosses are quite a lot more deadly!\n\n" + "To go along with this challenge, I've also made a few targeted tweaks to regular boss mechanics:\n" + @@ -342,7 +342,7 @@ public class v0_9_X_Changes { "_- Succubi:_ Damage up to 25-30 from 22-30.\n" + "_- Scorpios:_ HP up to 110 from 95, damage up to 30-40 from 26-36.")); - changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), "Hostile Champions", + changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_COLOR), "Hostile Champions", "I've made another round of tweaks to the Hostile Champions challenge to make it more consistent and a bit harder overall:\n\n" + "_-_ Champion spawn rate up to 1/8 from 1/10.\n" + "_-_ Rather than having a 1/8 chance per enemy, the game now guarantees that every 8th enemy is a champion. This should make champion spawn rates much more consistent.\n" + @@ -551,7 +551,7 @@ public class v0_9_X_Changes { "Talents are split into tiers, and to start only the first tier is available, which covers levels 1 to 6. More talents will be added soon!\n\n" + "Previously I would have spent many more months on v0.9.0 and released the entire system in one update, but I'm changing up my strategy and splitting these big updates into smaller parts.")); - changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), "Hostile Champions!", + changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_COLOR), "Hostile Champions!", "A new challenge has been added: _Hostile Champions!_\n\n" + "Unlike most other challenges, this one focuses on amping up the difficulty of the dungeon, rather than removing tools from the player. Give it a try if you've unlocked challenges, and you might find some particularly nasty enemies in the dungeon!")); @@ -570,7 +570,7 @@ public class v0_9_X_Changes { "The _Mage_ no longer has an innate wand identification effect, this is replaced by his wand identification talent.\n\n" + "The _Huntress'_ studded gloves have had their base damage reduced to 1-5 from 1-6, to compensate for her damage-dealing talent.")); - changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_OFF), "Existing Challenges", + changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_GREY), "Existing Challenges", "Some existing challenges have been tweaked to reduce the number of items that they remove from the game:\n\n" + "_On Diet_ no longer restricts food, but instead causes all food to be 1/3 as effective at satiating hunger.\n\n" + "_Faith Is My Armor_ no longer restricts the hero to cloth armor, but instead heavily reduces the blocking power of all armor above cloth.\n\n" + diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v2_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v2_X_Changes.java index 23d3889ca..01455835e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v2_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v2_X_Changes.java @@ -206,7 +206,7 @@ public class v2_X_Changes { "_-_ Champion's two weapons now share a charge count, but Champion gets boosted max charges and charge speed.\n" + "_-_ Champion's secondary charge talent has been replaced with a new talent that encourages varied ability use.")); - changes.addButton( new ChangeButton(Icons.get(Icons.ENERGY), "Alchemy Changes", + changes.addButton( new ChangeButton(new ItemSprite(ItemSpriteSheet.ENERGY), "Alchemy Changes", "I've made a bunch of changes to the alchemy system to streamline things and complement the addition of trinkets:\n" + "\n" + "_-_ Catalysts have been removed entirely, recipes that required one now simply cost 8 or 9 more energy.\n" + @@ -607,7 +607,7 @@ public class v2_X_Changes { changes.hardlight(CharSprite.WARNING); changeInfos.add(changes); - changes.addButton( new ChangeButton(Icons.CHALLENGE_ON.get(), "Hostile Champions", + changes.addButton( new ChangeButton(Icons.CHALLENGE_COLOR.get(), "Hostile Champions", "I've decided to make some changes to the hostile champions challenge, to better balance the difficulty of each of the champion types, and address some common feedback about difficulty spikes:\n" + "\n" + "_- Projecting Champions_ now have +3 attack range, instead of infinite range\n" + diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndGame.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndGame.java index e380790ef..08cfcb2a7 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndGame.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndGame.java @@ -70,7 +70,7 @@ public class WndGame extends Window { GameScene.show( new WndChallenges( Dungeon.challenges, false ) ); } } ); - curBtn.icon(Icons.get(Icons.CHALLENGE_ON)); + curBtn.icon(Icons.get(Icons.CHALLENGE_COLOR)); } // Restart diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndGameInProgress.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndGameInProgress.java index 48331e9e2..892726620 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndGameInProgress.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndGameInProgress.java @@ -78,7 +78,7 @@ public class WndGameInProgress extends Window { Game.scene().add( new WndChallenges( info.challenges, false ) ); } }; - btnChallenges.icon(Icons.get(Icons.CHALLENGE_ON)); + btnChallenges.icon(Icons.get(Icons.CHALLENGE_COLOR)); float btnW = btnChallenges.reqWidth() + 2; btnChallenges.setRect( (WIDTH - btnW)/2, pos, btnW , 18 ); add( btnChallenges ); 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 75713d25f..0046d37ed 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java @@ -39,6 +39,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfWarding; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.SpiritBow; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; import com.shatteredpixel.shatteredpixeldungeon.journal.Bestiary; import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog; import com.shatteredpixel.shatteredpixeldungeon.journal.Document; @@ -702,6 +703,13 @@ public class WndJournal extends WndTabbed { } } + //mage's staff normally has 2 pixels extra at the top for particle effects, we chop that off here + if (item instanceof MagesStaff){ + RectF frame = sprite.frame(); + frame.top += frame.height()/8f; + sprite.frame(frame); + } + if (item.icon != -1) { secondIcon = new Image(Assets.Sprites.ITEM_ICONS); secondIcon.frame(ItemSpriteSheet.Icons.film.get(item.icon)); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndRanking.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndRanking.java index 01fca2c57..abb43ab82 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndRanking.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndRanking.java @@ -107,7 +107,7 @@ public class WndRanking extends WndTabbed { if (Dungeon.hero != null) { Icons[] icons = - {Icons.RANKINGS, Icons.TALENT, Icons.BACKPACK_LRG, Icons.BADGES, Icons.CHALLENGE_ON}; + {Icons.RANKINGS, Icons.TALENT, Icons.BACKPACK_LRG, Icons.BADGES, Icons.CHALLENGE_COLOR}; Group[] pages = {new StatsTab(), new TalentsTab(), new ItemsTab(), new BadgesTab(), null};