From 45ecb30dbe526213d39f4e2983d878a85bad4e67 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Wed, 5 Nov 2025 12:50:48 -0500 Subject: [PATCH] v3.3.0: added a randomize button to hero select --- core/src/main/assets/interfaces/icons.png | Bin 16575 -> 16673 bytes .../assets/messages/scenes/scenes.properties | 6 + .../shatteredpixeldungeon/Challenges.java | 7 +- .../scenes/HeroSelectScene.java | 118 ++++++++++++++++++ .../shatteredpixeldungeon/ui/Icons.java | 4 + .../ui/OptionSlider.java | 8 ++ 6 files changed, 142 insertions(+), 1 deletion(-) diff --git a/core/src/main/assets/interfaces/icons.png b/core/src/main/assets/interfaces/icons.png index 46a19741ef9e3d35cf8fb30bce761da1b66d6544..5d1b01f87fca575a2dd664514e7134e3bdf95bc0 100644 GIT binary patch literal 16673 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 P=zIcCS3j3^P6= 2) { + StyledButton randomButton = new StyledButton(Chrome.Type.BLANK, Messages.get(HeroSelectScene.class, "randomize"), 6) { + @Override + protected void onClick() { + + if (Badges.isUnlocked(Badges.Badge.VICTORY) || DeviceCompat.isDebug()){ + ShatteredPixelDungeon.scene().addToFront(new WndRandomize()); + //add window + } else { + + HeroClass randomCls; + do { + randomCls = Random.oneOf(HeroClass.values()); + } while (!randomCls.isUnlocked()); + setSelectedHero(randomCls); + } + } + }; + randomButton.leftJustify = true; + randomButton.icon(Icons.SHUFFLE.get()); + buttons.add(randomButton); + add(randomButton); + } + for (int i = 1; i < buttons.size(); i++){ ColorBlock spc = new ColorBlock(1, 1, 0xFF000000); add(spc); @@ -817,6 +851,90 @@ public class HeroSelectScene extends PixelScene { } } + private class WndRandomize extends Window { + + CheckBox chkHero; + CheckBox chkChals; + OptionSlider optChals; + + public WndRandomize(){ + super(); + + chkHero = new CheckBox(Messages.get(HeroSelectScene.class, "randomize_hero")); + chkHero.setRect(0, 0, 120, 16); + chkHero.checked(true); + add(chkHero); + + chkChals = new CheckBox(Messages.get(HeroSelectScene.class, "randomize_chals")){ + @Override + public void checked(boolean value) { + super.checked(value); + optChals.enable(value); + } + }; + chkChals.setRect(0, 20, 120, 16); + add(chkChals); + + int max = Challenges.MAX_CHALS; + optChals = new OptionSlider(Messages.get(HeroSelectScene.class, "randomize_chals_title"), "0", Integer.toString(max), 0, max) { + @Override + protected void onChange() { + //do nothing immediately + } + }; + optChals.enable(false); + optChals.setSelectedValue(Challenges.activeChallenges(SPDSettings.challenges())); + optChals.setRect(0, 38, 120, 22); + add(optChals); + + RedButton btnCancel = new RedButton(Messages.get(HeroSelectScene.class, "randomize_cancel")){ + @Override + protected void onClick() { + super.onClick(); + hide(); + } + }; + btnCancel.setRect(61, 64, 60, 16); + add(btnCancel); + + RedButton btnConfirm = new RedButton(Messages.get(HeroSelectScene.class, "randomize_confirm")){ + @Override + protected void onClick() { + super.onClick(); + hide(); + if (chkHero.checked()){ + HeroClass randomCls; + do { + randomCls = Random.oneOf(HeroClass.values()); + } while (!randomCls.isUnlocked()); + setSelectedHero(randomCls); + } + + if (chkChals.checked()){ + int chals = optChals.getSelectedValue(); + ArrayList chalMasks = new ArrayList<>(); + for (int i = 0; i < Challenges.MAX_CHALS; i++){ + chalMasks.add((int)Math.pow(2, i)); + } + Random.shuffle(chalMasks); + int mask = 0; + for (int i = 0; i < chals; i++){ + mask += chalMasks.remove(0); + } + SPDSettings.challenges(mask); + ShatteredPixelDungeon.scene().addToFront(new WndChallenges(mask, false)); + } + } + }; + btnConfirm.setRect(0, 64, 60, 16); + add(btnConfirm); + + resize(120, (int)btnConfirm.bottom()); + + } + + } + @Override protected void layout() { super.layout(); 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 1127365fd..8907230fb 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java @@ -62,6 +62,7 @@ public enum Icons { RIGHTARROW, CALENDAR, CHEVRON, + SHUFFLE, //misc larger icons, mainly used for buttons, tabs, and journal, spacing for 16x16 TARGET, @@ -224,6 +225,9 @@ public enum Icons { case CHEVRON: icon.frame( icon.texture.uvRectBySize( 240, 16, 13, 10 ) ); break; + case SHUFFLE: + icon.frame(icon.texture.uvRectBySize( 240, 32, 16, 15 ) ); + break; case TARGET: icon.frame( icon.texture.uvRectBySize( 0, 32, 16, 16 ) ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/OptionSlider.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/OptionSlider.java index 0354a6af3..c244eb7a4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/OptionSlider.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/OptionSlider.java @@ -87,6 +87,14 @@ public abstract class OptionSlider extends Component { PixelScene.align(sliderNode); } + public void enable( boolean value ) { + active = value; + title.alpha( value ? 1.0f : 0.3f ); + minTxt.alpha( value ? 1.0f : 0.3f ); + maxTxt.alpha( value ? 1.0f : 0.3f ); + sliderNode.alpha( value ? 1.0f : 0.3f ); + } + @Override protected void createChildren() { super.createChildren();