From daa569b4fe7fd69de736765ccbf63e652f8e5c82 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Tue, 6 Jul 2021 19:25:49 -0400 Subject: [PATCH] v0.9.4: various refactors and improvements to buff and talent icon code --- .../actors/buffs/Momentum.java | 3 +- .../actors/hero/HeroSubClass.java | 21 +++--- .../shatteredpixeldungeon/ui/BuffIcon.java | 34 +++++++++ .../ui/BuffIndicator.java | 70 ++++++++++--------- .../ui/TalentButton.java | 15 ++-- .../shatteredpixeldungeon/ui/TalentIcon.java | 25 +++++++ .../ui/changelist/v0_6_X_Changes.java | 6 +- .../ui/changelist/v0_8_X_Changes.java | 6 +- .../ui/changelist/v0_9_X_Changes.java | 7 +- .../windows/WndHero.java | 11 +-- .../windows/WndInfoBuff.java | 11 +-- .../windows/WndInfoTalent.java | 18 +---- 12 files changed, 131 insertions(+), 96 deletions(-) create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIcon.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/TalentIcon.java diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Momentum.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Momentum.java index 5e70a9979..4df4385ad 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Momentum.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Momentum.java @@ -27,6 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.ui.ActionIndicator; +import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIcon; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.watabou.noosa.Image; import com.watabou.noosa.audio.Sample; @@ -182,7 +183,7 @@ public class Momentum extends Buff implements ActionIndicator.Action { @Override public Image getIcon() { - Image im = new Image(Assets.Interfaces.BUFFS_LARGE, 144, 32, 16, 16); + Image im = new BuffIcon(BuffIndicator.HASTE, true); im.hardlight(0x99992E); return im; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroSubClass.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroSubClass.java index 581e29787..79d29daf0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroSubClass.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroSubClass.java @@ -23,9 +23,13 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.hero; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Combo; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Fury; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; +import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIcon; +import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.watabou.noosa.Game; import com.watabou.noosa.Image; @@ -70,34 +74,33 @@ public enum HeroSubClass { } } - //FIXME shouldn't hardcode these, probably want to just have a BuffIcon class public Image icon(){ switch (this){ case GLADIATOR: default: - return new Image(Assets.Interfaces.BUFFS_LARGE, 16, 16, 16, 16); + return new BuffIcon(BuffIndicator.COMBO, true); case BERSERKER: - return new Image(Assets.Interfaces.BUFFS_LARGE, 32, 16, 16, 16); + return new BuffIcon(BuffIndicator.FURY, true); case WARLOCK: - return new Image(Assets.Interfaces.BUFFS_LARGE, 64, 32, 16, 16); + return new BuffIcon(BuffIndicator.CORRUPT, true); case BATTLEMAGE: - Image im = new Image(Assets.Interfaces.BUFFS_LARGE, 32, 48, 16, 16); + Image im = new BuffIcon(BuffIndicator.UPGRADE, true); im.hardlight(1f, 1f, 0f); return im; case ASSASSIN: - im = new Image(Assets.Interfaces.BUFFS_LARGE, 160, 32, 16, 16); + im = new BuffIcon(BuffIndicator.PREPARATION, true); im.hardlight(1f, 0f, 0f); return im; case FREERUNNER: - im = new Image(Assets.Interfaces.BUFFS_LARGE, 48, 48, 16, 16); + im = new BuffIcon(BuffIndicator.MOMENTUM, true); im.hardlight(1f, 1f, 0f); return im; case SNIPER: - return new Image(Assets.Interfaces.BUFFS_LARGE, 176, 16, 16, 16); + return new BuffIcon(BuffIndicator.MARK, true); case WARDEN: - return new Image(Assets.Interfaces.BUFFS_LARGE, 208, 0, 16, 16); + return new BuffIcon(BuffIndicator.BARKSKIN, true); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIcon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIcon.java new file mode 100644 index 000000000..ac2765ba9 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIcon.java @@ -0,0 +1,34 @@ +package com.shatteredpixel.shatteredpixeldungeon.ui; + +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.watabou.noosa.Image; +import com.watabou.noosa.TextureFilm; + +public class BuffIcon extends Image { + + private static TextureFilm smallFilm; + private static final int SML_SIZE = 7; + + private static TextureFilm largeFilm; + private static final int LRG_SIZE = 16; + + //TODO maybe roll fading behaviour into this too? + public BuffIcon(Buff buff, boolean large){ + this(buff.icon(), large); + buff.tintIcon(this); + } + + public BuffIcon(int icon, boolean large){ + super( large ? Assets.Interfaces.BUFFS_LARGE : Assets.Interfaces.BUFFS_SMALL ); + + if (large){ + if (largeFilm == null) largeFilm = new TextureFilm(texture, LRG_SIZE, LRG_SIZE); + frame(largeFilm.get(icon)); + } else { + if (smallFilm == null ) smallFilm = new TextureFilm(texture, SML_SIZE, SML_SIZE); + frame(smallFilm.get(icon)); + } + } + +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIndicator.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIndicator.java index 83e5a9e25..23746bab3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIndicator.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/BuffIndicator.java @@ -32,8 +32,8 @@ import com.watabou.gltextures.SmartTexture; import com.watabou.gltextures.TextureCache; import com.watabou.noosa.Image; import com.watabou.noosa.TextureFilm; +import com.watabou.noosa.audio.Sample; import com.watabou.noosa.tweeners.AlphaTweener; -import com.watabou.noosa.ui.Button; import com.watabou.noosa.ui.Component; import java.util.ArrayList; @@ -104,10 +104,7 @@ public class BuffIndicator extends Component { private static BuffIndicator heroInstance; - private SmartTexture texture; - private TextureFilm film; - - private LinkedHashMap buffIcons = new LinkedHashMap<>(); + private LinkedHashMap buffButtons = new LinkedHashMap<>(); private boolean needsRefresh; private Char ch; @@ -128,13 +125,7 @@ public class BuffIndicator extends Component { heroInstance = null; } } - - @Override - protected void createChildren() { - texture = TextureCache.get( Assets.Interfaces.BUFFS_SMALL ); - film = new TextureFilm( texture, SIZE, SIZE ); - } - + @Override public synchronized void update() { super.update(); @@ -155,9 +146,9 @@ public class BuffIndicator extends Component { } //remove any icons no longer present - for (Buff buff : buffIcons.keySet().toArray(new Buff[0])){ + for (Buff buff : buffButtons.keySet().toArray(new Buff[0])){ if (!newBuffs.contains(buff)){ - Image icon = buffIcons.get( buff ).icon; + Image icon = buffButtons.get( buff ).icon; icon.origin.set( SIZE / 2f ); icon.alpha(0.6f); add( icon ); @@ -174,24 +165,24 @@ public class BuffIndicator extends Component { } } ); - buffIcons.get( buff ).destroy(); - remove(buffIcons.get( buff )); - buffIcons.remove( buff ); + buffButtons.get( buff ).destroy(); + remove(buffButtons.get( buff )); + buffButtons.remove( buff ); } } //add new icons for (Buff buff : newBuffs) { - if (!buffIcons.containsKey(buff)) { - BuffIcon icon = new BuffIcon( buff ); + if (!buffButtons.containsKey(buff)) { + BuffButton icon = new BuffButton(buff); add(icon); - buffIcons.put( buff, icon ); + buffButtons.put( buff, icon ); } } //layout int pos = 0; - for (BuffIcon icon : buffIcons.values()){ + for (BuffButton icon : buffButtons.values()){ icon.updateIcon(); icon.setRect(x + pos * (SIZE + 2), y, 9, 12); PixelScene.align(icon); @@ -199,27 +190,28 @@ public class BuffIndicator extends Component { } } - private class BuffIcon extends Button { + private static class BuffButton extends IconButton { private Buff buff; - public Image icon; + //Todo maybe move into buff icon? public Image grey; - public BuffIcon( Buff buff ){ - super(); + public BuffButton(Buff buff ){ + super( new BuffIcon(buff, false)); this.buff = buff; - icon = new Image( texture ); - icon.frame( film.get( buff.icon() ) ); - add( icon ); + bringToFront(grey); + } + @Override + protected void createChildren() { + super.createChildren(); grey = new Image( TextureCache.createSolid(0xCC666666)); add( grey ); } - + public void updateIcon(){ - icon.frame( film.get( buff.icon() ) ); buff.tintIcon(icon); //round up to the nearest pixel if <50% faded, otherwise round down float fadeHeight = buff.iconFadePercent() * icon.height(); @@ -234,14 +226,24 @@ public class BuffIndicator extends Component { @Override protected void layout() { super.layout(); - grey.x = icon.x = this.x+1; - grey.y = icon.y = this.y+2; + grey.x = icon.x = this.x + 1; + grey.y = icon.y = this.y + 2; } @Override protected void onClick() { - if (buff.icon() != NONE) - GameScene.show(new WndInfoBuff(buff)); + if (buff.icon() != NONE) GameScene.show(new WndInfoBuff(buff)); + } + + @Override + protected void onPointerDown() { + //don't affect buff color + Sample.INSTANCE.play( Assets.Sounds.CLICK ); + } + + @Override + protected void onPointerUp() { + //don't affect buff color } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/TalentButton.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/TalentButton.java index 2732bc07b..bf8ae1155 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/TalentButton.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/TalentButton.java @@ -44,15 +44,12 @@ public class TalentButton extends Button { public static final int WIDTH = 20; public static final int HEIGHT = 26; - private SmartTexture icons; - private TextureFilm film; - int tier; Talent talent; int pointsInTalent; boolean upgradeEnabled; - Image icon; + TalentIcon icon; Image bg; ColorBlock fill; @@ -67,24 +64,20 @@ public class TalentButton extends Button { this.upgradeEnabled = upgradeEnabled; bg.frame(20*(talent.maxPoints()-1), 0, WIDTH, HEIGHT); - icon.frame( film.get( talent.icon() ) ); + + icon = new TalentIcon( talent ); + add(icon); } @Override protected void createChildren() { super.createChildren(); - icons = TextureCache.get( Assets.Interfaces.TALENT_ICONS ); - film = new TextureFilm( icons, 16, 16 ); - fill = new ColorBlock(0, 4, 0xFFFFFF44); add(fill); bg = new Image(Assets.Interfaces.TALENT_BUTTON); add(bg); - - icon = new Image( icons ); - add(icon); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/TalentIcon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/TalentIcon.java new file mode 100644 index 000000000..0472e33a1 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/TalentIcon.java @@ -0,0 +1,25 @@ +package com.shatteredpixel.shatteredpixeldungeon.ui; + +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; +import com.watabou.noosa.Image; +import com.watabou.noosa.TextureFilm; + +public class TalentIcon extends Image { + + private static TextureFilm film; + private static final int SIZE = 16; + + public TalentIcon(Talent talent){ + this(talent.icon()); + } + + public TalentIcon(int icon){ + super( Assets.Interfaces.TALENT_ICONS ); + + if (film == null) film = new TextureFilm(texture, SIZE, SIZE); + + frame(film.get(icon)); + } + +} 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 d99b8b51b..4073d885b 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 @@ -55,6 +55,8 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.ChangesScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIcon; +import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.watabou.noosa.Image; @@ -312,7 +314,7 @@ public class v0_6_X_Changes { changes.hardlight( CharSprite.NEGATIVE ); changeInfos.add(changes); - changes.addButton( new ChangeButton(new Image(Assets.Interfaces.BUFFS_LARGE, 64, 0, 16, 16), "Paralysis changes", + changes.addButton( new ChangeButton(new BuffIcon(BuffIndicator.PARALYSIS, true), "Paralysis changes", "Paralysis is an extremely powerful debuff, and its ability to completely immobilize the player or an enemy while they are killed needs to be adjusted.\n" + "\n" + "Chance to resist paralysis is now based on all recent damage taken while paralyzed, instead of each specific instance of damage separately.\n" + @@ -395,7 +397,7 @@ public class v0_6_X_Changes { changes.hardlight( CharSprite.WARNING ); changeInfos.add(changes); - changes.addButton( new ChangeButton(new Image(Assets.Interfaces.BUFFS_LARGE, 32, 0, 16, 16), "Changes to debuffs and resistances", + changes.addButton( new ChangeButton(new BuffIcon(BuffIndicator.FIRE, true), "Changes to debuffs and resistances", "The game's resistance system has been totally overhauled, to allow for more flexibility and consistency.\n\n" + "Previously, if a character was resistant to something, its effect would be reduced by a random amount between 0% and 100%.\n\n" + "Now, resistances are much less random, applying a specific reduction to harmful effects. Currently all resistances are 50%.\n\n" + diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_8_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_8_X_Changes.java index 1e9f29f8f..9446d4e9d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_8_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_8_X_Changes.java @@ -54,6 +54,8 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.ShamanSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.SpawnerSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.StatueSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.YogSprite; +import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIcon; +import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.watabou.noosa.Image; @@ -283,7 +285,7 @@ public class v0_8_X_Changes { "_-_ Some misc sounds have also been added for: gas spewing, chains being thrown, magical effects charging up, and the player being hit to low health.\n\n" + "I've also remastered the title and ending music tracks to improve their quality and volume.")); - changes.addButton( new ChangeButton(new Image(Assets.Interfaces.BUFFS_LARGE, 0, 0, 16, 16), "Item and Buff Icons", + changes.addButton( new ChangeButton(new BuffIcon(BuffIndicator.MIND_VISION, true), "Item and Buff Icons", "_Buff icons now have a new fading behaviour_ that much more accurately communicates how much of their duration is left. Several duplicated buff icons have also been recolored so they are distinct.\n\n" + "_Item icons have been added to rings!_ To accommodate this, item icons now appear in the top-right of an item's inventory slot. Several existing item icons have also been improved.")); @@ -682,7 +684,7 @@ public class v0_8_X_Changes { "_-_ Doubled corruption resistance reduction from debuffs, as it was 50% weaker than intended. It is now as strong as listed in 0.7.5 changelog (50% for major debuffs, 25% for minor)\n\n" + "Additionally, corruption is getting access to two of the new debuffs added in 0.8.0: _Hex,_ and _Weakness._")); - changes.addButton( new ChangeButton(new Image(Assets.Interfaces.BUFFS_LARGE, 80, 32, 16, 16), "Bless changes", + changes.addButton( new ChangeButton(new BuffIcon(BuffIndicator.BLESS, true), "Bless changes", "Accuracy and evasion bonuses from blessed buff increased to 25% from 20%." )); changes.addButton( new ChangeButton(new StoneOfAugmentation(), 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 b037f788e..1662596ec 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 @@ -42,6 +42,7 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.SpawnerSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.SpinnerSprite; import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; +import com.shatteredpixel.shatteredpixeldungeon.ui.TalentIcon; import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.watabou.noosa.Image; @@ -401,7 +402,7 @@ public class v0_9_X_Changes { "_-_ 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" + "_-_ Removed champion enemy caps, no longer needed now that spawning is more consistent.")); - changes.addButton(new ChangeButton(new Image(Assets.Interfaces.TALENT_ICONS, 80, 16, 16, 16), "On-Upgrade Talents", + changes.addButton(new ChangeButton(new TalentIcon(Talent.ENERGIZING_UPGRADE), "On-Upgrade Talents", "T2 talents are doing very well overall, but I'm handing out a buff to each on-upgrade talent as they're a bit weak and aren't picked often:\n\n" + "_- Energizing Upgrade_ staff charges increased to 2/3 at +1/+2, up from 1/2 at +1/+2.\n" + "_- Mystical Upgrade_ cloak of shadows charges increased to 2/3 at +1/+2, up from 1/2 at +1/+2.")); @@ -420,7 +421,7 @@ public class v0_9_X_Changes { "_- the Chalice of Blood_ now grants more HP per turn with artifact charging based on its level, instead of based on dungeon depth.\n" + "_-_ This scaling occurs in the same way as how the chalice scales up health regen. The max heal per turn is unchanged at 5.")); - changes.addButton(new ChangeButton(new Image(Assets.Interfaces.TALENT_ICONS, 48, 48, 16, 16), "Nature's Aid", + changes.addButton(new ChangeButton(new TalentIcon(Talent.NATURES_AID), "Nature's Aid", "I'm nudging nature's down slightly as it is currently the strongest T1 talent by a fair margin:\n\n" + "_- Nature's Aid_ turns of barkskin reduced to 3/5 at +1/+2, from 4/6 at +1/+2.")); @@ -566,7 +567,7 @@ public class v0_9_X_Changes { changes.hardlight(CharSprite.NEGATIVE); changeInfos.add(changes); - changes.addButton( new ChangeButton( new Image(Assets.Interfaces.TALENT_ICONS, 0, 0, 16, 16), Talent.HEARTY_MEAL.title(), + changes.addButton( new ChangeButton( new TalentIcon(Talent.HEARTY_MEAL), Talent.HEARTY_MEAL.title(), "_Hearty Meal_ is currently the strongest tier one talent in the game, so I'm deepening the missing health requirement slightly to make its power a bit harder to access:\n\n" + "_-_ Now grants 2/3 healing when hero is below 50% health, down from 3/5\n" + "_-_ The full 3/5 heal is still available if the hero is below 25% health")); 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 3ffb48583..7d06211d1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHero.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHero.java @@ -31,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.HeroSprite; +import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIcon; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.shatteredpixel.shatteredpixeldungeon.ui.IconButton; import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; @@ -200,9 +201,6 @@ public class WndHero extends WndTabbed { private class BuffsTab extends Component { private static final int GAP = 2; - - private SmartTexture icons; - private TextureFilm film; private float pos; private ScrollPane buffList; @@ -210,8 +208,6 @@ public class WndHero extends WndTabbed { @Override protected void createChildren() { - icons = TextureCache.get( Assets.Interfaces.BUFFS_LARGE ); - film = new TextureFilm( icons, 16, 16 ); super.createChildren(); @@ -260,11 +256,8 @@ public class WndHero extends WndTabbed { public BuffSlot( Buff buff ){ super(); this.buff = buff; - int index = buff.icon(); - icon = new Image( icons ); - icon.frame( film.get( index ) ); - buff.tintIcon(icon); + icon = new BuffIcon(buff, true); icon.y = this.y; add( icon ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndInfoBuff.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndInfoBuff.java index bc2f4452b..c380d1688 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndInfoBuff.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndInfoBuff.java @@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; +import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIcon; import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextBlock; import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.watabou.gltextures.SmartTexture; @@ -38,20 +39,12 @@ public class WndInfoBuff extends Window { private static final int WIDTH = 120; - private SmartTexture icons; - private TextureFilm film; - public WndInfoBuff(Buff buff){ super(); IconTitle titlebar = new IconTitle(); - icons = TextureCache.get( Assets.Interfaces.BUFFS_LARGE ); - film = new TextureFilm( icons, 16, 16 ); - - Image buffIcon = new Image( icons ); - buffIcon.frame( film.get(buff.icon()) ); - buff.tintIcon(buffIcon); + Image buffIcon = new BuffIcon( buff, true ); titlebar.icon( buffIcon ); titlebar.label( Messages.titleCase(buff.toString()), Window.TITLE_COLOR ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndInfoTalent.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndInfoTalent.java index c92895870..316ad4ea3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndInfoTalent.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndInfoTalent.java @@ -21,18 +21,14 @@ package com.shatteredpixel.shatteredpixeldungeon.windows; -import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton; import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextBlock; +import com.shatteredpixel.shatteredpixeldungeon.ui.TalentIcon; import com.shatteredpixel.shatteredpixeldungeon.ui.Window; -import com.watabou.gltextures.SmartTexture; -import com.watabou.gltextures.TextureCache; -import com.watabou.noosa.Image; -import com.watabou.noosa.TextureFilm; import com.watabou.utils.Callback; public class WndInfoTalent extends Window { @@ -41,21 +37,12 @@ public class WndInfoTalent extends Window { private static final int WIDTH = 120; - private SmartTexture icons; - private TextureFilm film; - public WndInfoTalent(Talent talent, int points, Callback onUpgradeButton){ super(); IconTitle titlebar = new IconTitle(); - icons = TextureCache.get( Assets.Interfaces.TALENT_ICONS ); - film = new TextureFilm( icons, 16, 16 ); - - Image buffIcon = new Image( icons ); - buffIcon.frame( film.get(talent.icon()) ); - - titlebar.icon( buffIcon ); + titlebar.icon( new TalentIcon( talent ) ); String title = Messages.titleCase(talent.title()); if (points > 0){ title += " +" + points; @@ -86,7 +73,6 @@ public class WndInfoTalent extends Window { resize( WIDTH, (int)upgrade.bottom()+1 ); } - } }