From 2b44154ac1be281a8bfe9e7f6b8680f0367f23e9 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Tue, 20 Jan 2015 17:26:53 -0500 Subject: [PATCH] v0.2.3e: refactored quick slot button, should now support multiple instances of itself tied to different quickslots, needs testing --- .../shatteredpixeldungeon/Bones.java | 4 +- .../shatteredpixeldungeon/QuickSlot.java | 11 ++++ .../actors/hero/Hero.java | 4 +- .../shatteredpixeldungeon/items/DewVial.java | 12 ++-- .../shatteredpixeldungeon/items/Item.java | 14 ++-- .../items/KindOfWeapon.java | 4 +- .../items/artifacts/CapeOfThorns.java | 6 +- .../items/artifacts/CloakOfShadows.java | 8 +-- .../items/artifacts/DriedRose.java | 4 +- .../items/artifacts/TimekeepersHourglass.java | 10 +-- .../items/artifacts/UnstableSpellbook.java | 4 +- .../items/wands/Wand.java | 4 +- .../scenes/GameScene.java | 5 +- .../{QuickSlot.java => QuickSlotButton.java} | 66 +++++++++---------- .../shatteredpixeldungeon/ui/Toolbar.java | 8 ++- .../shatteredpixeldungeon/windows/WndBag.java | 4 +- 16 files changed, 86 insertions(+), 82 deletions(-) rename src/com/shatteredpixel/shatteredpixeldungeon/ui/{QuickSlot.java => QuickSlotButton.java} (77%) diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/Bones.java b/src/com/shatteredpixel/shatteredpixeldungeon/Bones.java index 9e2a48deb..729fbab91 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/Bones.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/Bones.java @@ -23,7 +23,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Gold; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.Artifact; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; -import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlot; +import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton; import com.watabou.noosa.Game; import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -86,7 +86,7 @@ public class Bones { item = hero.belongings.misc2; break; case 4: - item = QuickSlot.getItem(); + item = Dungeon.quickslot.randomNonePlaceholder(); break; } if (item != null && !item.bones) diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/QuickSlot.java b/src/com/shatteredpixel/shatteredpixeldungeon/QuickSlot.java index 738a9d590..3bbc663df 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/QuickSlot.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/QuickSlot.java @@ -3,6 +3,7 @@ package com.shatteredpixel.shatteredpixeldungeon; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.watabou.utils.Bundlable; import com.watabou.utils.Bundle; +import com.watabou.utils.Random; import java.util.ArrayList; import java.util.Collection; @@ -77,6 +78,16 @@ public class QuickSlot { setSlot( i , placeholder ); } + public Item randomNonePlaceholder(){ + + ArrayList result = new ArrayList(); + for (int i = 0; i < slots.size(); i ++) + if (slots.get(i) != null && !isPlaceholder(i)) + result.add(slots.get(i)); + + return Random.element(result); + } + private final String PLACEHOLDERS = "placeholders"; private final String PLACEMENTS = "placements"; diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java index ef3623f4f..814edd441 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java @@ -98,7 +98,7 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.HeroSprite; import com.shatteredpixel.shatteredpixeldungeon.ui.AttackIndicator; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; -import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlot; +import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.windows.WndMessage; import com.shatteredpixel.shatteredpixeldungeon.windows.WndResurrect; @@ -879,7 +879,7 @@ public class Hero extends Char { wand.curCharges++; if (Dungeon.quickslot.contains(wand)) { - QuickSlot.refresh(); + QuickSlotButton.refresh(); } ScrollOfRecharging.charge( this ); diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/DewVial.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/DewVial.java index 14b1a1ac2..153dbe6f2 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/DewVial.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/DewVial.java @@ -21,14 +21,12 @@ import java.util.ArrayList; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass; -import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlot; +import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton; import com.watabou.noosa.audio.Sample; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; -import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShaftParticle; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; -import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite.Glowing; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.utils.Utils; @@ -111,7 +109,7 @@ public class DewVial extends Item { Sample.INSTANCE.play( Assets.SND_DRINK ); hero.sprite.operate( hero.pos ); - QuickSlot.refresh(); + QuickSlotButton.refresh(); } else { @@ -125,7 +123,7 @@ public class DewVial extends Item { } } - public void empty() {volume = 0; QuickSlot.refresh();} + public void empty() {volume = 0; QuickSlotButton.refresh();} @Override public boolean isUpgradable() { @@ -150,12 +148,12 @@ public class DewVial extends Item { GLog.p( TXT_FULL ); } - QuickSlot.refresh(); + QuickSlotButton.refresh(); } public void fill() { volume = MAX_VOLUME; - QuickSlot.refresh(); + QuickSlotButton.refresh(); } //removed as people need a bigger distinction to realize the dew vial doesn't revive. diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/Item.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/Item.java index 549d1dcd0..317e6762b 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/Item.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/Item.java @@ -32,7 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.CellSelector; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.MissileSprite; -import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlot; +import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.utils.Utils; import com.watabou.noosa.audio.Sample; @@ -179,7 +179,7 @@ public class Item implements Bundlable { items.add( this ); Dungeon.quickslot.replaceSimilar(this); - QuickSlot.refresh(); + QuickSlotButton.refresh(); Collections.sort( items, itemComparator ); return true; @@ -234,12 +234,12 @@ public class Item implements Bundlable { public final Item detachAll( Bag container ) { Dungeon.quickslot.clearItem( this ); - QuickSlot.refresh(); + QuickSlotButton.refresh(); for (Item item : container.items) { if (item == this) { - container.items.remove( this ); - item.onDetach( ); + container.items.remove(this); + item.onDetach(); return this; } else if (item instanceof Bag) { Bag bag = (Bag)item; @@ -398,7 +398,7 @@ public class Item implements Bundlable { public void updateQuickslot() { if (Dungeon.quickslot.contains( this )) { - QuickSlot.refresh(); + QuickSlotButton.refresh(); } } @@ -455,7 +455,7 @@ public class Item implements Bundlable { user.busy(); Char enemy = Actor.findChar( cell ); - QuickSlot.target( this, enemy ); + QuickSlotButton.target(enemy); float delay = TIME_TO_THROW; if (this instanceof MissileWeapon) { diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java index 70ce7d80a..05d8200c0 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java @@ -22,7 +22,7 @@ import java.util.ArrayList; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; -import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlot; +import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.watabou.utils.Random; @@ -61,7 +61,7 @@ public class KindOfWeapon extends EquipableItem { hero.belongings.weapon = this; activate( hero ); - QuickSlot.refresh(); + QuickSlotButton.refresh(); cursedKnown = true; if (cursed) { diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CapeOfThorns.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CapeOfThorns.java index 61ddfccb9..20be9bcd0 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CapeOfThorns.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CapeOfThorns.java @@ -4,7 +4,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; -import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlot; +import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.watabou.utils.Random; @@ -60,7 +60,7 @@ public class CapeOfThorns extends Artifact { BuffIndicator.refreshHero(); GLog.w("Your Cape becomes inert again."); } - QuickSlot.refresh(); + QuickSlotButton.refresh(); } spend(TICK); return true; @@ -92,7 +92,7 @@ public class CapeOfThorns extends Artifact { } } - QuickSlot.refresh(); + QuickSlotButton.refresh(); return damage; } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CloakOfShadows.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CloakOfShadows.java index b971c651b..a3b343ce2 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CloakOfShadows.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CloakOfShadows.java @@ -8,7 +8,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; -import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlot; +import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.watabou.noosa.audio.Sample; import com.watabou.noosa.tweeners.AlphaTweener; @@ -185,7 +185,7 @@ public class CloakOfShadows extends Artifact { if (cooldown > 0) cooldown --; - QuickSlot.refresh(); + QuickSlotButton.refresh(); spend( TICK ); @@ -227,7 +227,7 @@ public class CloakOfShadows extends Artifact { GLog.p("Your Cloak Grows Stronger!"); } - QuickSlot.refresh(); + QuickSlotButton.refresh(); spend( TICK ); @@ -247,7 +247,7 @@ public class CloakOfShadows extends Artifact { cooldown = 10 - (level / 3); - QuickSlot.refresh(); + QuickSlotButton.refresh(); super.detach(); } } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java index 63896934c..654cdeda8 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java @@ -19,7 +19,7 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.GhostSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; -import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlot; +import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.windows.WndQuest; import com.watabou.noosa.audio.Sample; @@ -211,7 +211,7 @@ public class DriedRose extends Artifact { } - QuickSlot.refresh(); + QuickSlotButton.refresh(); spend( TICK ); diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/TimekeepersHourglass.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/TimekeepersHourglass.java index 6864bc511..9d845e5b3 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/TimekeepersHourglass.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/TimekeepersHourglass.java @@ -10,7 +10,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; -import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlot; +import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions; import com.watabou.noosa.audio.Sample; @@ -202,7 +202,7 @@ public class TimekeepersHourglass extends Artifact { } else if (cursed && Random.Int(10) == 0) ((Hero) target).spend( TICK ); - QuickSlot.refresh(); + QuickSlotButton.refresh(); spend( TICK ); @@ -226,7 +226,7 @@ public class TimekeepersHourglass extends Artifact { target.invisible++; - QuickSlot.refresh(); + QuickSlotButton.refresh(); Dungeon.observe(); @@ -262,7 +262,7 @@ public class TimekeepersHourglass extends Artifact { charge --; } - QuickSlot.refresh(); + QuickSlotButton.refresh(); if (charge <= 0){ detach(); @@ -301,7 +301,7 @@ public class TimekeepersHourglass extends Artifact { GameScene.freezeEmitters = false; charge = 0; - QuickSlot.refresh(); + QuickSlotButton.refresh(); super.detach(); activeBuff = null; } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/UnstableSpellbook.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/UnstableSpellbook.java index e9d33eef7..60b6ef814 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/UnstableSpellbook.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/UnstableSpellbook.java @@ -13,7 +13,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicMappi import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRemoveCurse; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; -import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlot; +import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag; import com.watabou.noosa.audio.Sample; @@ -197,7 +197,7 @@ public class UnstableSpellbook extends Artifact { } } - QuickSlot.refresh(); + QuickSlotButton.refresh(); spend( TICK ); diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java index 4ad650388..79e4177a2 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/Wand.java @@ -39,7 +39,7 @@ import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.scenes.CellSelector; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; -import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlot; +import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.watabou.utils.Bundle; import com.watabou.utils.Callback; @@ -410,7 +410,7 @@ public abstract class Wand extends KindOfWeapon { final int cell = Ballistica.cast( curUser.pos, target, true, curWand.hitChars ); curUser.sprite.zap( cell ); - QuickSlot.target( curItem, Actor.findChar( cell ) ); + QuickSlotButton.target(Actor.findChar(cell)); if (curWand.curCharges > 0) { diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java index c741e1b69..c477a8489 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java @@ -22,7 +22,6 @@ import java.io.IOException; import com.shatteredpixel.shatteredpixeldungeon.*; import com.watabou.noosa.Camera; import com.watabou.noosa.Game; -import com.watabou.noosa.Gizmo; import com.watabou.noosa.Group; import com.watabou.noosa.SkinnedBlock; import com.watabou.noosa.Visual; @@ -57,7 +56,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.Banner; import com.shatteredpixel.shatteredpixeldungeon.ui.BusyIndicator; import com.shatteredpixel.shatteredpixeldungeon.ui.GameLog; import com.shatteredpixel.shatteredpixeldungeon.ui.HealthIndicator; -import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlot; +import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton; import com.shatteredpixel.shatteredpixeldungeon.ui.StatusPane; import com.shatteredpixel.shatteredpixeldungeon.ui.Toast; import com.shatteredpixel.shatteredpixeldungeon.ui.Toolbar; @@ -597,7 +596,7 @@ public class GameScene extends PixelScene { public static void ready() { selectCell( defaultCellListener ); - QuickSlot.cancel(); + QuickSlotButton.cancel(); } private static final CellSelector.Listener defaultCellListener = new CellSelector.Listener() { diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/ui/QuickSlot.java b/src/com/shatteredpixel/shatteredpixeldungeon/ui/QuickSlotButton.java similarity index 77% rename from src/com/shatteredpixel/shatteredpixeldungeon/ui/QuickSlot.java rename to src/com/shatteredpixel/shatteredpixeldungeon/ui/QuickSlotButton.java index b87909302..e7f41c941 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/ui/QuickSlot.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/ui/QuickSlotButton.java @@ -28,28 +28,30 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag; -//TODO: add proper multi-quickslot functionality. -public class QuickSlot extends Button implements WndBag.Listener { +//TODO: investigate targeting with multiple quickslots +public class QuickSlotButton extends Button implements WndBag.Listener { private static final String TXT_SELECT_ITEM = "Select an item for the quickslot"; - private static QuickSlot instance; + private static QuickSlotButton[] instance = new QuickSlotButton[4]; + private int slotNum; private Item itemInSlot; private ItemSlot slot; - private Image crossB; - private Image crossM; + private static Image crossB; + private static Image crossM; - private boolean targeting = false; + private static boolean targeting = false; private Item lastItem = null; - private Char lastTarget= null; + private static Char lastTarget= null; - public QuickSlot() { + public QuickSlotButton( int slotNum ) { super(); - item( select() ); + this.slotNum = slotNum; + item( select( slotNum ) ); - instance = this; + instance[slotNum] = this; } @Override @@ -72,18 +74,14 @@ public class QuickSlot extends Button implements WndBag.Listener { if (targeting) { GameScene.handleCell( lastTarget.pos ); } else { - Item item = select(); - if (item == lastItem) { - useTargeting(); - } else { - lastItem = item; - } + Item item = select(slotNum); + useTargeting(); item.execute( Dungeon.hero ); } } @Override protected boolean onLongClick() { - return QuickSlot.this.onLongClick(); + return QuickSlotButton.this.onLongClick(); } @Override protected void onTouchDown() { @@ -124,21 +122,15 @@ public class QuickSlot extends Button implements WndBag.Listener { GameScene.selectItem( this, WndBag.Mode.QUICKSLOT, TXT_SELECT_ITEM ); return true; } - - @SuppressWarnings("unchecked") - private static Item select() { - return Dungeon.quickslot.getItem(0); - } - public static Item getItem(){ - Item item = select(); - return (item != null && item.quantity() != 0)? item : null; - } + private static Item select(int slotNum){ + return Dungeon.quickslot.getItem( slotNum ); + } @Override public void onSelect( Item item ) { if (item != null) { - Dungeon.quickslot.setSlot( 0 , item ); + Dungeon.quickslot.setSlot( slotNum , item ); refresh(); } } @@ -181,24 +173,26 @@ public class QuickSlot extends Button implements WndBag.Listener { } public static void refresh() { - if (instance != null) { - instance.item( select() ); + for (int i = 0; i < instance.length; i++) { + if (instance[i] != null) { + instance[i].item(select(i)); + } } } - public static void target( Item item, Char target ) { - if (item == instance.lastItem && target != Dungeon.hero) { - instance.lastTarget = target; + public static void target( Char target ) { + if (target != Dungeon.hero) { + lastTarget = target; HealthIndicator.instance.target( target ); } } public static void cancel() { - if (instance != null && instance.targeting) { - instance.crossB.visible = false; - instance.crossM.remove(); - instance.targeting = false; + if (targeting) { + crossB.visible = false; + crossM.remove(); + targeting = false; } } } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/ui/Toolbar.java b/src/com/shatteredpixel/shatteredpixeldungeon/ui/Toolbar.java index ba63eeba4..a07d16909 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/ui/Toolbar.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/ui/Toolbar.java @@ -275,17 +275,19 @@ public class Toolbar extends Component { private static class QuickslotTool extends Tool { - private QuickSlot slot; + private QuickSlotButton slot; + private int slotNum; - public QuickslotTool( int x, int y, int width, int height ) { + public QuickslotTool( int x, int y, int width, int height, int slotNum ) { super( x, y, width, height ); + this.slotNum = slotNum; } @Override protected void createChildren() { super.createChildren(); - slot = new QuickSlot(); + slot = new QuickSlotButton( slotNum ); add( slot ); } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndBag.java b/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndBag.java index c61ded0ce..920e074c8 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndBag.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndBag.java @@ -42,7 +42,7 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; import com.shatteredpixel.shatteredpixeldungeon.ui.ItemSlot; -import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlot; +import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton; import com.shatteredpixel.shatteredpixeldungeon.utils.Utils; import com.watabou.gltextures.TextureCache; import com.watabou.noosa.BitmapText; @@ -396,7 +396,7 @@ public class WndBag extends WndTabbed { if (listener == null && item.defaultAction != null) { hide(); Dungeon.quickslot.setSlot( 0 , item ); - QuickSlot.refresh(); + QuickSlotButton.refresh(); return true; } else { return false;