diff --git a/core/src/main/assets/chrome.png b/core/src/main/assets/chrome.png index 2eba9e0fb..cf2cf117c 100644 Binary files a/core/src/main/assets/chrome.png and b/core/src/main/assets/chrome.png differ diff --git a/core/src/main/assets/dashboard.png b/core/src/main/assets/dashboard.png deleted file mode 100644 index 92f2bf5c0..000000000 Binary files a/core/src/main/assets/dashboard.png and /dev/null differ diff --git a/core/src/main/assets/icons.png b/core/src/main/assets/icons.png index e0a5104ad..49375b947 100644 Binary files a/core/src/main/assets/icons.png and b/core/src/main/assets/icons.png differ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Chrome.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Chrome.java index 96862caac..88852af0d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Chrome.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Chrome.java @@ -29,7 +29,9 @@ public class Chrome { TOAST, TOAST_TR, WINDOW, - BUTTON, + RED_BUTTON, + GREY_BUTTON, + GREY_BUTTON_TR, TAG, GEM, SCROLL, @@ -47,12 +49,16 @@ public class Chrome { return new NinePatch( Asset, 22, 0, 18, 18, 5 ); case TOAST_TR: return new NinePatch( Asset, 40, 0, 18, 18, 5 ); - case BUTTON: + case RED_BUTTON: return new NinePatch( Asset, 58, 0, 6, 6, 2 ); + case GREY_BUTTON: + return new NinePatch( Asset, 58, 6, 6, 6, 2 ); case TAG: return new NinePatch( Asset, 22, 18, 16, 14, 3 ); case GEM: return new NinePatch( Asset, 0, 32, 32, 32, 13 ); + case GREY_BUTTON_TR: + return new NinePatch( Asset, 53, 20, 9, 9, 5 ); case SCROLL: return new NinePatch( Asset, 32, 32, 32, 32, 5, 11, 5, 11 ); case TAB_SET: diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/AlchemyScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/AlchemyScene.java index 94835bc46..39d233cc0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/AlchemyScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/AlchemyScene.java @@ -494,7 +494,7 @@ public class AlchemyScene extends PixelScene { protected void createChildren() { super.createChildren(); - bg = Chrome.get( Chrome.Type.BUTTON ); + bg = Chrome.get( Chrome.Type.RED_BUTTON); add( bg ); slot = new ItemSlot() { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java index a124ba9db..ccc46f06f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java @@ -22,6 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.scenes; import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.Chrome; import com.shatteredpixel.shatteredpixeldungeon.GamesInProgress; import com.shatteredpixel.shatteredpixeldungeon.SPDSettings; import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; @@ -29,20 +30,19 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.BannerSprites; import com.shatteredpixel.shatteredpixeldungeon.effects.Fireball; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.ui.Archs; -import com.shatteredpixel.shatteredpixeldungeon.ui.ChangesButton; import com.shatteredpixel.shatteredpixeldungeon.ui.ExitButton; +import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; import com.shatteredpixel.shatteredpixeldungeon.ui.LanguageButton; import com.shatteredpixel.shatteredpixeldungeon.ui.PrefsButton; +import com.shatteredpixel.shatteredpixeldungeon.ui.StyledButton; +import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions; import com.shatteredpixel.shatteredpixeldungeon.windows.WndStartGame; import com.watabou.glwrap.Blending; import com.watabou.noosa.BitmapText; import com.watabou.noosa.Camera; import com.watabou.noosa.Game; import com.watabou.noosa.Image; -import com.watabou.noosa.RenderedText; import com.watabou.noosa.audio.Music; -import com.watabou.noosa.audio.Sample; -import com.watabou.noosa.ui.Button; import com.watabou.utils.DeviceCompat; public class TitleScene extends PixelScene { @@ -99,23 +99,7 @@ public class TitleScene extends PixelScene { signs.y = title.y; add( signs ); - DashboardItem btnBadges = new DashboardItem( Messages.get(this, "badges"), 3 ) { - @Override - protected void onClick() { - ShatteredPixelDungeon.switchNoFade( BadgesScene.class ); - } - }; - add(btnBadges); - - DashboardItem btnAbout = new DashboardItem( Messages.get(this, "about"), 1 ) { - @Override - protected void onClick() { - ShatteredPixelDungeon.switchNoFade( AboutScene.class ); - } - }; - add( btnAbout ); - - DashboardItem btnPlay = new DashboardItem( Messages.get(this, "play"), 0 ) { + TitleButton btnPlay = new TitleButton(Messages.get(this, "enter")){ @Override protected void onClick() { if (GamesInProgress.checkAll().size() == 0){ @@ -135,39 +119,96 @@ public class TitleScene extends PixelScene { return super.onLongClick(); } }; - add( btnPlay ); + btnPlay.icon(Icons.get(Icons.ENTER)); + add(btnPlay); - DashboardItem btnRankings = new DashboardItem( Messages.get(this, "rankings"), 2 ) { + TitleButton btnSupport = new TitleButton(Messages.get(this, "support")){ + @Override + protected void onClick() { + WndOptions wnd = new WndOptions(Messages.get(TitleScene.class, "support"), + Messages.get(TitleScene.class, "patreon_body"), + Messages.get(TitleScene.class, "patreon_button")){ + @Override + protected void onSelect(int index) { + if (index == 0){ + DeviceCompat.openURI("https://www.patreon.com/ShatteredPixel"); + } else { + hide(); + } + } + }; + parent.add(wnd); + } + }; + btnSupport.icon(Icons.get(Icons.GOLD)); + add(btnSupport); + + TitleButton btnRankings = new TitleButton(Messages.get(this, "rankings")){ @Override protected void onClick() { ShatteredPixelDungeon.switchNoFade( RankingsScene.class ); } }; - add( btnRankings ); + btnRankings.icon(Icons.get(Icons.RANKINGS)); + add(btnRankings); + + TitleButton btnBadges = new TitleButton(Messages.get(this, "badges")){ + @Override + protected void onClick() { + ShatteredPixelDungeon.switchNoFade( BadgesScene.class ); + } + }; + btnBadges.icon(Icons.get(Icons.BADGES)); + add(btnBadges); + + TitleButton btnChanges = new TitleButton(Messages.get(this, "changes")){ + @Override + protected void onClick() { + ChangesScene.changesSelected = 0; + ShatteredPixelDungeon.switchNoFade( ChangesScene.class ); + } + }; + btnChanges.icon(Icons.get(Icons.CHANGES)); + add(btnChanges); + + TitleButton btnAbout = new TitleButton(Messages.get(this, "about")){ + @Override + protected void onClick() { + ShatteredPixelDungeon.switchNoFade( AboutScene.class ); + } + }; + btnAbout.icon(Icons.get(Icons.SHPX)); + add(btnAbout); + + final int BTN_HEIGHT = 21; + int GAP = (int)(h - topRegion - (SPDSettings.landscape() ? 3 : 4)*BTN_HEIGHT)/3; + GAP /= SPDSettings.landscape() ? 3 : 4; + GAP = Math.max(GAP, 2); if (SPDSettings.landscape()) { - btnRankings .setPos( w / 2 - btnRankings.width(), topRegion ); - btnBadges .setPos( w / 2, topRegion ); - btnPlay .setPos( btnRankings.left() - btnPlay.width(), topRegion ); - btnAbout .setPos( btnBadges.right(), topRegion ); + btnPlay.setRect(title.x-50, topRegion+GAP, ((title.width()+100)/2)-1, BTN_HEIGHT); + align(btnPlay); + btnSupport.setRect(btnPlay.right()+2, btnPlay.top(), btnPlay.width(), BTN_HEIGHT); + btnRankings.setRect(btnPlay.left() + (btnPlay.width()*.33f)+1, btnPlay.bottom()+ GAP, (btnPlay.width()*.67f)-1, BTN_HEIGHT); + btnBadges.setRect(btnRankings.right()+2, btnRankings.top(), btnRankings.width(), BTN_HEIGHT); + btnChanges.setRect(btnRankings.left(), btnRankings.bottom() + GAP, btnRankings.width(), BTN_HEIGHT); + btnAbout.setRect(btnChanges.right()+2, btnChanges.top(), btnRankings.width(), BTN_HEIGHT); } else { - btnPlay.setPos( w / 2 - btnPlay.width(), topRegion ); - btnRankings.setPos( w / 2, btnPlay.top() ); - btnBadges.setPos( w / 2 - btnBadges.width(), btnPlay.top() + DashboardItem.SIZE ); - btnAbout.setPos( w / 2, btnBadges.top() ); + btnPlay.setRect(title.x, topRegion+GAP, title.width(), BTN_HEIGHT); + align(btnPlay); + btnRankings.setRect(btnPlay.left(), btnPlay.bottom()+ GAP, (btnPlay.width()/2)-1, BTN_HEIGHT); + btnBadges.setRect(btnRankings.right()+2, btnRankings.top(), btnRankings.width(), BTN_HEIGHT); + btnChanges.setRect(btnRankings.left(), btnRankings.bottom()+ GAP, btnRankings.width(), BTN_HEIGHT); + btnAbout.setRect(btnChanges.right()+2, btnChanges.top(), btnChanges.width(), BTN_HEIGHT); + btnSupport.setRect(btnPlay.left(), btnAbout.bottom()+ GAP, btnPlay.width(), BTN_HEIGHT); } - BitmapText version = new BitmapText( "v " + Game.version + "", pixelFont); + BitmapText version = new BitmapText( "v" + Game.version, pixelFont); version.measure(); version.hardlight( 0x888888 ); version.x = w - version.width() - 4; version.y = h - version.height() - 2; add( version ); - - Button changes = new ChangesButton(); - changes.setPos( version.x + version.width() - changes.width(), - version.y - changes.height()); - add( changes ); int pos = 2; @@ -194,57 +235,15 @@ public class TitleScene extends PixelScene { add( fb ); } - private static class DashboardItem extends Button { + private static class TitleButton extends StyledButton { - public static final float SIZE = 48; - - private static final int IMAGE_SIZE = 32; - - private Image image; - private RenderedText label; - - public DashboardItem( String text, int index ) { - super(); - - image.frame( image.texture.uvRect( index * IMAGE_SIZE, 0, (index + 1) * IMAGE_SIZE, IMAGE_SIZE ) ); - this.label.text( text ); - - setSize( SIZE, SIZE ); + public TitleButton( String label ){ + this(label, 9); } - @Override - protected void createChildren() { - super.createChildren(); - - image = new Image( Assets.DASHBOARD ); - add( image ); - - label = renderText( 9 ); - add( label ); + public TitleButton( String label, int size ){ + super(Chrome.Type.GREY_BUTTON_TR, label, size); } - @Override - protected void layout() { - super.layout(); - - image.x = x + (width - image.width()) / 2; - image.y = y; - align(image); - - label.x = x + (width - label.width()) / 2; - label.y = image.y + image.height() +2; - align(label); - } - - @Override - protected void onTouchDown() { - image.brightness( 1.5f ); - Sample.INSTANCE.play( Assets.SND_CLICK, 1, 1, 0.8f ); - } - - @Override - protected void onTouchUp() { - image.resetColor(); - } } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/ChangesButton.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/ChangesButton.java deleted file mode 100644 index a5bded9bb..000000000 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/ChangesButton.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Pixel Dungeon - * Copyright (C) 2012-2015 Oleg Dolya - * - * Shattered Pixel Dungeon - * Copyright (C) 2014-2019 Evan Debenham - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see - */ - -package com.shatteredpixel.shatteredpixeldungeon.ui; - -import com.shatteredpixel.shatteredpixeldungeon.Assets; -import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; -import com.shatteredpixel.shatteredpixeldungeon.scenes.ChangesScene; -import com.watabou.noosa.Image; -import com.watabou.noosa.audio.Sample; -import com.watabou.noosa.ui.Button; - -public class ChangesButton extends Button { - - protected Image image; - - public ChangesButton() { - super(); - - width = image.width; - height = image.height; - } - - @Override - protected void createChildren() { - super.createChildren(); - - image = Icons.NOTES.get(); - add( image ); - } - - @Override - protected void layout() { - super.layout(); - - image.x = x; - image.y = y; - } - - @Override - protected void onTouchDown() { - image.brightness( 1.5f ); - Sample.INSTANCE.play( Assets.SND_CLICK ); - } - - @Override - protected void onTouchUp() { - image.resetColor(); - } - - @Override - protected void onClick() { - ChangesScene.changesSelected = 0; - ShatteredPixelDungeon.switchNoFade(ChangesScene.class); - } -} 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 32072e3fc..25bf6b1b8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java @@ -36,7 +36,6 @@ public enum Icons { TARGET, MASTERY, WATA, - SHPX, WARRIOR, MAGE, ROGUE, @@ -58,7 +57,13 @@ public enum Icons { LANGS, CHALLENGE_OFF, CHALLENGE_ON, - RESUME; + RESUME, + ENTER, + GOLD, + RANKINGS, + BADGES, + CHANGES, + SHPX; public Image get() { return get( this ); @@ -94,9 +99,6 @@ public enum Icons { case WATA: icon.frame( icon.texture.uvRect( 30, 16, 45, 26 ) ); break; - case SHPX: - icon.frame( icon.texture.uvRect( 64, 44, 80, 60 ) ); - break; case WARRIOR: icon.frame( icon.texture.uvRect( 0, 29, 16, 45 ) ); break; @@ -148,11 +150,8 @@ public enum Icons { case EXIT: icon.frame( icon.texture.uvRect( 108, 0, 124, 16 ) ); break; - case NOTES: - icon.frame( icon.texture.uvRect( 79, 40, 94, 56 ) ); - break; case LANGS: - icon.frame( icon.texture.uvRect( 95, 42, 107, 51 ) ); + icon.frame( icon.texture.uvRect( 109, 16, 121, 25 ) ); break; case CHALLENGE_OFF: icon.frame( icon.texture.uvRect( 78, 12, 92, 24 ) ); @@ -163,6 +162,24 @@ public enum Icons { case RESUME: icon.frame( icon.texture.uvRect( 13, 53, 24, 64 ) ); break; + case ENTER: + icon.frame( icon.texture.uvRect( 66, 26, 83, 43 ) ); + break; + case GOLD: + icon.frame( icon.texture.uvRect( 83, 26, 100, 42 ) ); + break; + case RANKINGS: + icon.frame( icon.texture.uvRect( 100, 26, 117, 43 ) ); + break; + case BADGES: + icon.frame( icon.texture.uvRect( 66, 46, 83, 63 ) ); + break; + case CHANGES: + icon.frame( icon.texture.uvRect( 83, 47, 100, 62 ) ); + break; + case SHPX: + icon.frame( icon.texture.uvRect( 100, 46, 116, 62 ) ); + break; } return icon; } 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 43bbb9008..ddbca0389 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/OptionSlider.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/OptionSlider.java @@ -91,7 +91,7 @@ public abstract class OptionSlider extends Component { protected void createChildren() { super.createChildren(); - add( BG = Chrome.get(Chrome.Type.BUTTON)); + add( BG = Chrome.get(Chrome.Type.RED_BUTTON)); BG.alpha(0.5f); add(title = PixelScene.renderText(9)); @@ -99,7 +99,7 @@ public abstract class OptionSlider extends Component { add(this.maxTxt = PixelScene.renderText(6)); add(sliderBG = new ColorBlock(1, 1, 0xFF222222)); - sliderNode = Chrome.get(Chrome.Type.BUTTON); + sliderNode = Chrome.get(Chrome.Type.RED_BUTTON); sliderNode.size(5, 9); touchArea = new TouchArea(0, 0, 0, 0){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/RedButton.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/RedButton.java index e4446a05c..1b96edff8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/RedButton.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/RedButton.java @@ -21,131 +21,16 @@ package com.shatteredpixel.shatteredpixeldungeon.ui; -import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Chrome; -import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; -import com.watabou.noosa.Image; -import com.watabou.noosa.NinePatch; -import com.watabou.noosa.RenderedText; -import com.watabou.noosa.audio.Sample; -import com.watabou.noosa.ui.Button; -public class RedButton extends Button { - - protected NinePatch bg; - protected RenderedText text; - protected Image icon; +public class RedButton extends StyledButton { public RedButton( String label ) { this(label, 9); } public RedButton( String label, int size ){ - super(); - - text = PixelScene.renderText( size ); - text.text( label ); - add( text ); + super( Chrome.Type.RED_BUTTON, label, size); } - @Override - protected void createChildren() { - super.createChildren(); - - bg = Chrome.get( Chrome.Type.BUTTON ); - add( bg ); - } - - @Override - protected void layout() { - - super.layout(); - - bg.x = x; - bg.y = y; - bg.size( width, height ); - - float componentWidth = 0; - - if (icon != null) componentWidth += icon.width() + 2; - - if (text != null && !text.text().equals("")){ - componentWidth += text.width() + 2; - - text.x = x + (width() + componentWidth)/2f - text.width() - 1; - text.y = y + (height() - text.baseLine()) / 2f; - PixelScene.align(text); - - } - - if (icon != null) { - - icon.x = x + (width() - componentWidth)/2f + 1; - icon.y = y + (height() - icon.height()) / 2f; - PixelScene.align(icon); - } - - } - - @Override - protected void onTouchDown() { - bg.brightness( 1.2f ); - Sample.INSTANCE.play( Assets.SND_CLICK ); - } - - @Override - protected void onTouchUp() { - bg.resetColor(); - } - - public void enable( boolean value ) { - active = value; - text.alpha( value ? 1.0f : 0.3f ); - } - - public void text( String value ) { - text.text( value ); - layout(); - } - - public void textColor( int value ) { - text.hardlight( value ); - } - - public void icon( Image icon ) { - if (this.icon != null) { - remove( this.icon ); - } - this.icon = icon; - if (this.icon != null) { - add( this.icon ); - layout(); - } - } - - public Image icon(){ - return icon; - } - - public float reqWidth() { - float reqWidth = 0; - if (icon != null){ - reqWidth += icon.width() + 2; - } - if (text != null && !text.text().equals("")){ - reqWidth += text.width() + 2; - } - return reqWidth; - } - - public float reqHeight() { - float reqHeight = 0; - if (icon != null){ - reqHeight = Math.max(icon.height() + 4, reqHeight); - } - if (text != null && !text.text().equals("")){ - reqHeight = Math.max(text.baseLine() + 4, reqHeight); - } - return reqHeight; - } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/StyledButton.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/StyledButton.java new file mode 100644 index 000000000..c2b3b0e6b --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/StyledButton.java @@ -0,0 +1,147 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Shattered Pixel Dungeon + * Copyright (C) 2014-2019 Evan Debenham + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see + */ + +package com.shatteredpixel.shatteredpixeldungeon.ui; + +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.Chrome; +import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; +import com.watabou.noosa.Image; +import com.watabou.noosa.NinePatch; +import com.watabou.noosa.RenderedText; +import com.watabou.noosa.audio.Sample; +import com.watabou.noosa.ui.Button; + +//simple button which support a background chrome, text, and an icon. +public class StyledButton extends Button { + + protected NinePatch bg; + protected RenderedText text; + protected Image icon; + + public StyledButton(Chrome.Type type, String label ) { + this(type, label, 9); + } + + public StyledButton(Chrome.Type type, String label, int size ){ + super(); + + bg = Chrome.get( type ); + add( bg ); + + text = PixelScene.renderText( size ); + text.text( label ); + add( text ); + } + + @Override + protected void layout() { + + super.layout(); + + bg.x = x; + bg.y = y; + bg.size( width, height ); + + float componentWidth = 0; + + if (icon != null) componentWidth += icon.width() + 2; + + if (text != null && !text.text().equals("")){ + componentWidth += text.width() + 2; + + text.x = x + (width() + componentWidth)/2f - text.width() - 1; + text.y = y + (height() - text.baseLine()) / 2f; + PixelScene.align(text); + + } + + if (icon != null) { + + icon.x = x + (width() - componentWidth)/2f + 1; + icon.y = y + (height() - icon.height()) / 2f; + PixelScene.align(icon); + } + + } + + @Override + protected void onTouchDown() { + bg.brightness( 1.2f ); + Sample.INSTANCE.play( Assets.SND_CLICK ); + } + + @Override + protected void onTouchUp() { + bg.resetColor(); + } + + public void enable( boolean value ) { + active = value; + text.alpha( value ? 1.0f : 0.3f ); + } + + public void text( String value ) { + text.text( value ); + layout(); + } + + public void textColor( int value ) { + text.hardlight( value ); + } + + public void icon( Image icon ) { + if (this.icon != null) { + remove( this.icon ); + } + this.icon = icon; + if (this.icon != null) { + add( this.icon ); + layout(); + } + } + + public Image icon(){ + return icon; + } + + public float reqWidth() { + float reqWidth = 0; + if (icon != null){ + reqWidth += icon.width() + 2; + } + if (text != null && !text.text().equals("")){ + reqWidth += text.width() + 2; + } + return reqWidth; + } + + public float reqHeight() { + float reqHeight = 0; + if (icon != null){ + reqHeight = Math.max(icon.height() + 4, reqHeight); + } + if (text != null && !text.text().equals("")){ + reqHeight = Math.max(text.baseLine() + 4, reqHeight); + } + return reqHeight; + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBlacksmith.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBlacksmith.java index af3d20070..2535c38d7 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBlacksmith.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBlacksmith.java @@ -130,7 +130,7 @@ public class WndBlacksmith extends Window { protected void createChildren() { super.createChildren(); - bg = Chrome.get( Chrome.Type.BUTTON ); + bg = Chrome.get( Chrome.Type.RED_BUTTON); add( bg ); slot = new ItemSlot() {