From 7b2fab973009bf01c77e2993f17044a1b3368661 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Wed, 20 Jan 2021 21:25:46 -0500 Subject: [PATCH] v0.9.2: design changes to T3 talents and more talent UI adjustments --- .../main/assets/interfaces/talent_icons.png | Bin 2582 -> 2558 bytes .../actors/hero/Talent.java | 42 ++++++++++-------- .../scenes/HeroSelectScene.java | 4 +- .../shatteredpixeldungeon/ui/TalentsPane.java | 4 ++ .../windows/WndHero.java | 2 +- .../windows/WndRanking.java | 14 +++++- 6 files changed, 43 insertions(+), 23 deletions(-) diff --git a/core/src/main/assets/interfaces/talent_icons.png b/core/src/main/assets/interfaces/talent_icons.png index ee6714906b32893609c37cb7a64d9ee5fa5ee52e..963c8d6d5121778240e217924bc61ef3e0cb4232 100644 GIT binary patch delta 2423 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 O3TzDB5>gw?$@xD~Yj%ME delta 2448 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 diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java index c5f5c7ab5..8865c40b2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Talent.java @@ -71,44 +71,44 @@ public enum Talent { //Warrior T2 IRON_STOMACH(4), RESTORED_WILLPOWER(5), RUNIC_TRANSFERENCE(6), LETHAL_MOMENTUM(7), IMPROVISED_PROJECTILES(8), //Warrior T3 - WARRIOR_T3_1(9), WARRIOR_T3_2(10), WARRIOR_T3_3(11), + WARRIOR_T3_1(9, 3), WARRIOR_T3_2(10, 3), //Berserker T3 - BERSERKER_T3_1(12), BERSERKER_T3_2(13), BERSERKER_T3_3(14), + BERSERKER_T3_1(11, 3), BERSERKER_T3_2(12, 3), BERSERKER_T3_3(13, 3), //Gladiator T3 - GLADIATOR_T3_1(15), GLADIATOR_T3_2(16), GLADIATOR_T3_3(17), + GLADIATOR_T3_1(14, 3), GLADIATOR_T3_2(15, 3), GLADIATOR_T3_3(16, 3), //Mage T1 EMPOWERING_MEAL(32), SCHOLARS_INTUITION(33), TESTED_HYPOTHESIS(34), BACKUP_BARRIER(35), //Mage T2 ENERGIZING_MEAL(36), ENERGIZING_UPGRADE(37), WAND_PRESERVATION(38), ARCANE_VISION(39), SHIELD_BATTERY(40), //Mage T3 - MAGE_T3_1(41), MAGE_T3_2(42), MAGE_T3_3(43), + MAGE_T3_1(41), MAGE_T3_2(42), //Battlemage T3 - BATTLEMAGE_T3_1(44), BATTLEMAGE_T3_2(45), BATTLEMAGE_T3_3(46), + BATTLEMAGE_T3_1(43, 3), BATTLEMAGE_T3_2(44, 3), BATTLEMAGE_T3_3(45, 3), //Warlock T3 - WARLOCK_T3_1(47), WARLOCK_T3_2(48), WARLOCK_T3_3(49), + WARLOCK_T3_1(46, 3), WARLOCK_T3_2(47, 3), WARLOCK_T3_3(48, 3), //Rogue T1 CACHED_RATIONS(64), THIEFS_INTUITION(65), SUCKER_PUNCH(66), PROTECTIVE_SHADOWS(67), //Rogue T2 MYSTICAL_MEAL(68), MYSTICAL_UPGRADE(69), WIDE_SEARCH(70), SILENT_STEPS(71), ROGUES_FORESIGHT(72), //Rogue T3 - ROGUE_T3_1(73), ROGUE_T3_2(74), ROGUE_T3_3(75), + ROGUE_T3_1(73), ROGUE_T3_2(74), //Assassin T3 - ASSASSIN_T3_1(76), ASSASSIN_T3_2(77), ASSASSIN_T3_3(78), + ASSASSIN_T3_1(75, 3), ASSASSIN_T3_2(76, 3), ASSASSIN_T3_3(77, 3), //Freerunner T3 - FREERUNNER_T3_1(79), FREERUNNER_T3_2(80), FREERUNNER_T3_3(81), + FREERUNNER_T3_1(78, 3), FREERUNNER_T3_2(79, 3), FREERUNNER_T3_3(80, 3), //Huntress T1 NATURES_BOUNTY(96), SURVIVALISTS_INTUITION(97), FOLLOWUP_STRIKE(98), NATURES_AID(99), //Huntress T2 INVIGORATING_MEAL(100), RESTORED_NATURE(101), REJUVENATING_STEPS(102), HEIGHTENED_SENSES(103), DURABLE_PROJECTILES(104), //Huntress T3 - HUNTRESS_T3_1(105), HUNTRESS_T3_2(106), HUNTRESS_T3_3(107), + HUNTRESS_T3_1(105, 3), HUNTRESS_T3_2(106, 3), //Sniper T3 - SNIPER_T3_1(108), SNIPER_T3_2(109), SNIPER_T3_3(110), + SNIPER_T3_1(107, 3), SNIPER_T3_2(108, 3), SNIPER_T3_3(109, 3), //Warden T3 - WARDEN_T3_1(111), WARDEN_T3_2(112), WARDEN_T3_3(113); + WARDEN_T3_1(110, 3), WARDEN_T3_2(111, 3), WARDEN_T3_3(112, 3); public static class ImprovisedProjectileCooldown extends FlavourBuff{}; public static class LethalMomentumTracker extends FlavourBuff{}; @@ -116,12 +116,18 @@ public enum Talent { public static class RejuvenatingStepsCooldown extends FlavourBuff{}; int icon; + int maxPoints; // tiers 1/2/3/4 start at levels 2/7/13/21 public static int[] tierLevelThresholds = new int[]{0, 2, 7, 13, 21, 31}; - Talent(int icon ){ + Talent( int icon ){ + this(icon, 2); + } + + Talent( int icon, int maxPoints ){ this.icon = icon; + this.maxPoints = maxPoints; } public int icon(){ @@ -129,7 +135,7 @@ public enum Talent { } public int maxPoints(){ - return 2; + return maxPoints; } public String title(){ @@ -409,16 +415,16 @@ public enum Talent { //tier 3 switch (cls){ case WARRIOR: default: - Collections.addAll(tierTalents, WARRIOR_T3_1, WARRIOR_T3_2, WARRIOR_T3_3); + Collections.addAll(tierTalents, WARRIOR_T3_1, WARRIOR_T3_2); break; case MAGE: - Collections.addAll(tierTalents, MAGE_T3_1, MAGE_T3_2, MAGE_T3_3); + Collections.addAll(tierTalents, MAGE_T3_1, MAGE_T3_2); break; case ROGUE: - Collections.addAll(tierTalents, ROGUE_T3_1, ROGUE_T3_2, ROGUE_T3_3); + Collections.addAll(tierTalents, ROGUE_T3_1, ROGUE_T3_2); break; case HUNTRESS: - Collections.addAll(tierTalents, HUNTRESS_T3_1, HUNTRESS_T3_2, HUNTRESS_T3_3); + Collections.addAll(tierTalents, HUNTRESS_T3_1, HUNTRESS_T3_2); break; } for (Talent talent : tierTalents){ 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 4572e17df..b64c42833 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/HeroSelectScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/HeroSelectScene.java @@ -337,7 +337,7 @@ public class HeroSelectScene extends PixelScene { private RedButton firstSub; private RedButton secondSub; - private int WIDTH = 130; + private int WIDTH = 120; private int HEIGHT = 120; private int MARGIN = 2; private int INFO_WIDTH = WIDTH - MARGIN*2; @@ -494,7 +494,7 @@ public class HeroSelectScene extends PixelScene { firstSub.setPos((title.left() - firstSub.width())/2, 0); secondSub.setPos(title.right() + (WIDTH - title.right() - secondSub.width())/2, 0); - talents.setRect(0, info.bottom()+2*MARGIN, WIDTH, HEIGHT - (info.bottom()+2*MARGIN)); + talents.setRect(0, info.bottom()+MARGIN, WIDTH, HEIGHT - (info.bottom()+MARGIN)); resize(WIDTH, Math.max(HEIGHT, (int)info.bottom())); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/TalentsPane.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/TalentsPane.java index df3b5bce1..27eeccfa1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/TalentsPane.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/TalentsPane.java @@ -64,7 +64,11 @@ public class TalentsPane extends ScrollPane { } } + tiersAvailable = Math.min(tiersAvailable, talents.size()); + for (int i = 0; i < Math.min(tiersAvailable, talents.size()); i++){ + if (talents.get(i).isEmpty()) continue; + TalentTierPane pane = new TalentTierPane(talents.get(i), i+1, canUpgrade); panes.add(pane); content.add(pane); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHero.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHero.java index 03f1e680d..fe8953faf 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHero.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHero.java @@ -48,7 +48,7 @@ import java.util.Locale; public class WndHero extends WndTabbed { - private static final int WIDTH = 130; + private static final int WIDTH = 120; private static final int HEIGHT = 120; private StatsTab stats; 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 b01066553..f928b3853 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndRanking.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndRanking.java @@ -27,6 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Rankings; import com.shatteredpixel.shatteredpixeldungeon.Statistics; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Belongings; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; @@ -176,12 +177,21 @@ public class WndRanking extends WndTabbed { RedButton btnTalents = new RedButton( Messages.get(this, "talents") ){ @Override protected void onClick() { + //removes talents from upper tiers + int tiers = 1; + if (Dungeon.hero.lvl >= 6) tiers++; + if (Dungeon.hero.lvl >= 12 && Dungeon.hero.subClass != HeroSubClass.NONE) tiers++; + while (Dungeon.hero.talents.size() > tiers){ + Dungeon.hero.talents.remove(Dungeon.hero.talents.size()-1); + } Game.scene().addToFront( new Window(){ { - resize(120, 144); TalentsPane p = new TalentsPane(false); add(p); - p.setRect(0, 0, width, height); + p.setPos(0, 0); + p.setSize(120, p.content().height()); + resize((int)p.width(), (int)p.height()); + p.setPos(0, 0); } }); }