From e96b5db76bad0d75b254ec7fa5ac77de5439a621 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 6 Nov 2025 12:54:52 -0500 Subject: [PATCH] v3.3.0: adjusted random icon, added random button to hero progression --- core/src/main/assets/interfaces/icons.png | Bin 16673 -> 16666 bytes .../src/main/assets/messages/ui/ui.properties | 5 ++ .../messages/windows/windows.properties | 4 ++ .../shatteredpixeldungeon/ui/Icons.java | 2 +- .../shatteredpixeldungeon/ui/TalentsPane.java | 53 +++++++++++++++++- .../windows/WndChooseAbility.java | 40 ++++++++++--- .../windows/WndChooseSubclass.java | 33 ++++++++++- 7 files changed, 126 insertions(+), 11 deletions(-) diff --git a/core/src/main/assets/interfaces/icons.png b/core/src/main/assets/interfaces/icons.png index 5d1b01f87fca575a2dd664514e7134e3bdf95bc0..1674bbe59269bbe66090bb62d46cebe491465ac3 100644 GIT binary patch literal 16666 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 buttons; ArrayList stars = new ArrayList<>(); + IconButton random; public TalentTierPane(LinkedHashMap talents, int tier, TalentButton.Mode mode){ super(); @@ -172,7 +176,44 @@ public class TalentsPane extends ScrollPane { title.hardlight(Window.TITLE_COLOR); add(title); - if (mode == TalentButton.Mode.UPGRADE) setupStars(); + if (mode == TalentButton.Mode.UPGRADE) { + setupStars(); + if (Dungeon.hero.talentPointsAvailable(tier) > 0){ + + random = new IconButton(Icons.SHUFFLE.get()){ + @Override + protected void onClick() { + super.onClick(); + GameScene.show(new WndOptions( + Icons.SHUFFLE.get(), + Messages.get(TalentsPane.class, "random_title"), + Messages.get(TalentsPane.class, "random_sure"), + Messages.get(TalentsPane.class, "random_yes"), + Messages.get(TalentsPane.class, "random_one"), + Messages.get(TalentsPane.class, "random_no")) { + @Override + protected void onSelect(int index) { + super.onSelect(index); + if (index == 0 || index == 1){ + while (Dungeon.hero.talentPointsAvailable(tier) > 0){ + TalentButton button = Random.element(buttons); + if (Dungeon.hero.pointsInTalent(button.talent) < button.talent.maxPoints()){ + button.upgradeTalent(); + if (index == 1){ + break; + } + } + }; + setupStars(); + TalentTierPane.this.layout(); + } + } + }); + }; + }; + add(random); + } + } buttons = new ArrayList<>(); for (Talent talent : talents.keySet()){ @@ -213,6 +254,12 @@ public class TalentsPane extends ScrollPane { im.tint(0f, 0f, 0f, 0.9f); } } + + if (random != null && openStars == 0){ + random.killAndErase(); + random.destroy(); + random = null; + } } @Override @@ -242,6 +289,10 @@ public class TalentsPane extends ScrollPane { } } + if (random != null){ + random.setRect(width - 16, y-2, 16, 14); + } + float gap = (width - buttons.size()*TalentButton.WIDTH)/(buttons.size()+1); left = x + gap; for (TalentButton btn : buttons){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndChooseAbility.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndChooseAbility.java index 231afae82..27837bdee 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndChooseAbility.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndChooseAbility.java @@ -24,7 +24,6 @@ package com.shatteredpixel.shatteredpixeldungeon.windows; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.ArmorAbility; -import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.cleric.Trinity; import com.shatteredpixel.shatteredpixeldungeon.items.KingsCrown; import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; @@ -37,6 +36,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton; import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextBlock; import com.shatteredpixel.shatteredpixeldungeon.ui.Window; +import com.watabou.utils.Random; public class WndChooseAbility extends Window { @@ -54,6 +54,36 @@ public class WndChooseAbility extends Window { titlebar.setRect( 0, 0, WIDTH, 0 ); add( titlebar ); + IconButton random = new IconButton(Icons.SHUFFLE.get()){ + @Override + protected void onClick() { + super.onClick(); + GameScene.show(new WndOptions(Icons.SHUFFLE.get(), + Messages.get(WndChooseAbility.class, "random_title"), + Messages.get(WndChooseAbility.class, "random_sure"), + Messages.get(WndChooseAbility.class, "yes"), + Messages.get(WndChooseAbility.class, "no")){ + @Override + protected void onSelect(int index) { + super.onSelect(index); + if (index == 0){ + WndChooseAbility.this.hide(); + ArmorAbility abil = Random.oneOf(hero.heroClass.armorAbilities()); + crown.upgradeArmor(hero, armor, abil); + GameScene.show(new WndInfoArmorAbility(hero.heroClass, abil)); + } + } + }); + } + + @Override + protected String hoverText() { + return Messages.get(WndChooseAbility.class, "random_title"); + } + }; + random.setRect(WIDTH-16, 0, 16, 16); + if (crown != null) add(random); + RenderedTextBlock body = PixelScene.renderTextBlock( 6 ); if (crown != null) { body.text(Messages.get(this, "message"), WIDTH); @@ -66,18 +96,12 @@ public class WndChooseAbility extends Window { float pos = body.bottom() + 3*GAP; for (ArmorAbility ability : hero.heroClass.armorAbilities()) { - String warn; - if (Dungeon.initialVersion < 821 && ability instanceof Trinity){ - warn = "_WARNING, code to track which items you have found for use in trinity was added in BETA-2.2. This run was started before that, and so some items you have encountered may not be usable with Trinity. Any items you currently hold can be made selectable by dropping and picking them back up._\n\n"; - } else { - warn = ""; - } RedButton abilityButton = new RedButton(ability.shortDesc(), 6){ @Override protected void onClick() { GameScene.show(new WndOptions( new HeroIcon( ability ), Messages.titleCase(ability.name()), - warn + Messages.get(WndChooseAbility.this, "are_you_sure"), + Messages.get(WndChooseAbility.this, "are_you_sure"), Messages.get(WndChooseAbility.this, "yes"), Messages.get(WndChooseAbility.this, "no")){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndChooseSubclass.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndChooseSubclass.java index b94aa2422..4ae9179f1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndChooseSubclass.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndChooseSubclass.java @@ -35,6 +35,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton; import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextBlock; import com.shatteredpixel.shatteredpixeldungeon.ui.Window; +import com.watabou.utils.Random; public class WndChooseSubclass extends Window { @@ -48,9 +49,39 @@ public class WndChooseSubclass extends Window { IconTitle titlebar = new IconTitle(); titlebar.icon( new ItemSprite( tome.image(), null ) ); titlebar.label( tome.name() ); - titlebar.setRect( 0, 0, WIDTH, 0 ); + titlebar.setRect( 0, 0, WIDTH-16, 0 ); add( titlebar ); + IconButton random = new IconButton(Icons.SHUFFLE.get()){ + @Override + protected void onClick() { + super.onClick(); + GameScene.show(new WndOptions(Icons.SHUFFLE.get(), + Messages.get(WndChooseSubclass.class, "random_title"), + Messages.get(WndChooseSubclass.class, "random_sure"), + Messages.get(WndChooseSubclass.class, "yes"), + Messages.get(WndChooseSubclass.class, "no")){ + @Override + protected void onSelect(int index) { + super.onSelect(index); + if (index == 0){ + WndChooseSubclass.this.hide(); + HeroSubClass cls = Random.oneOf(hero.heroClass.subClasses()); + tome.choose(cls); + GameScene.show(new WndInfoSubclass(hero.heroClass, cls)); + } + } + }); + } + + @Override + protected String hoverText() { + return Messages.get(WndChooseSubclass.class, "random_title"); + } + }; + random.setRect(WIDTH-16, 0, 16, 16); + add(random); + RenderedTextBlock message = PixelScene.renderTextBlock( 6 ); message.text( Messages.get(this, "message"), WIDTH ); message.setPos( titlebar.left(), titlebar.bottom() + GAP );