v0.2.3e: refactored quick slot button, should now support multiple instances of itself tied to different quickslots, needs testing
This commit is contained in:
parent
18580f7f0b
commit
2b44154ac1
|
@ -23,7 +23,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Gold;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.Artifact;
|
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.Artifact;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon;
|
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.noosa.Game;
|
||||||
import com.watabou.utils.Bundle;
|
import com.watabou.utils.Bundle;
|
||||||
import com.watabou.utils.Random;
|
import com.watabou.utils.Random;
|
||||||
|
@ -86,7 +86,7 @@ public class Bones {
|
||||||
item = hero.belongings.misc2;
|
item = hero.belongings.misc2;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
item = QuickSlot.getItem();
|
item = Dungeon.quickslot.randomNonePlaceholder();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (item != null && !item.bones)
|
if (item != null && !item.bones)
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.shatteredpixel.shatteredpixeldungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.watabou.utils.Bundlable;
|
import com.watabou.utils.Bundlable;
|
||||||
import com.watabou.utils.Bundle;
|
import com.watabou.utils.Bundle;
|
||||||
|
import com.watabou.utils.Random;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
@ -77,6 +78,16 @@ public class QuickSlot {
|
||||||
setSlot( i , placeholder );
|
setSlot( i , placeholder );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Item randomNonePlaceholder(){
|
||||||
|
|
||||||
|
ArrayList<Item> result = new ArrayList<Item>();
|
||||||
|
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 PLACEHOLDERS = "placeholders";
|
||||||
private final String PLACEMENTS = "placements";
|
private final String PLACEMENTS = "placements";
|
||||||
|
|
||||||
|
|
|
@ -98,7 +98,7 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.HeroSprite;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.HeroSprite;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.AttackIndicator;
|
import com.shatteredpixel.shatteredpixeldungeon.ui.AttackIndicator;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
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.utils.GLog;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.windows.WndMessage;
|
import com.shatteredpixel.shatteredpixeldungeon.windows.WndMessage;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.windows.WndResurrect;
|
import com.shatteredpixel.shatteredpixeldungeon.windows.WndResurrect;
|
||||||
|
@ -879,7 +879,7 @@ public class Hero extends Char {
|
||||||
|
|
||||||
wand.curCharges++;
|
wand.curCharges++;
|
||||||
if (Dungeon.quickslot.contains(wand)) {
|
if (Dungeon.quickslot.contains(wand)) {
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
ScrollOfRecharging.charge( this );
|
ScrollOfRecharging.charge( this );
|
||||||
|
|
|
@ -21,14 +21,12 @@ import java.util.ArrayList;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass;
|
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.watabou.noosa.audio.Sample;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShaftParticle;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite.Glowing;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
|
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
|
||||||
|
@ -111,7 +109,7 @@ public class DewVial extends Item {
|
||||||
Sample.INSTANCE.play( Assets.SND_DRINK );
|
Sample.INSTANCE.play( Assets.SND_DRINK );
|
||||||
hero.sprite.operate( hero.pos );
|
hero.sprite.operate( hero.pos );
|
||||||
|
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} 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
|
@Override
|
||||||
public boolean isUpgradable() {
|
public boolean isUpgradable() {
|
||||||
|
@ -150,12 +148,12 @@ public class DewVial extends Item {
|
||||||
GLog.p( TXT_FULL );
|
GLog.p( TXT_FULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fill() {
|
public void fill() {
|
||||||
volume = MAX_VOLUME;
|
volume = MAX_VOLUME;
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
//removed as people need a bigger distinction to realize the dew vial doesn't revive.
|
//removed as people need a bigger distinction to realize the dew vial doesn't revive.
|
||||||
|
|
|
@ -32,7 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.CellSelector;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.MissileSprite;
|
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.GLog;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
|
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
|
||||||
import com.watabou.noosa.audio.Sample;
|
import com.watabou.noosa.audio.Sample;
|
||||||
|
@ -179,7 +179,7 @@ public class Item implements Bundlable {
|
||||||
|
|
||||||
items.add( this );
|
items.add( this );
|
||||||
Dungeon.quickslot.replaceSimilar(this);
|
Dungeon.quickslot.replaceSimilar(this);
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
Collections.sort( items, itemComparator );
|
Collections.sort( items, itemComparator );
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
@ -234,12 +234,12 @@ public class Item implements Bundlable {
|
||||||
|
|
||||||
public final Item detachAll( Bag container ) {
|
public final Item detachAll( Bag container ) {
|
||||||
Dungeon.quickslot.clearItem( this );
|
Dungeon.quickslot.clearItem( this );
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
|
|
||||||
for (Item item : container.items) {
|
for (Item item : container.items) {
|
||||||
if (item == this) {
|
if (item == this) {
|
||||||
container.items.remove( this );
|
container.items.remove(this);
|
||||||
item.onDetach( );
|
item.onDetach();
|
||||||
return this;
|
return this;
|
||||||
} else if (item instanceof Bag) {
|
} else if (item instanceof Bag) {
|
||||||
Bag bag = (Bag)item;
|
Bag bag = (Bag)item;
|
||||||
|
@ -398,7 +398,7 @@ public class Item implements Bundlable {
|
||||||
|
|
||||||
public void updateQuickslot() {
|
public void updateQuickslot() {
|
||||||
if (Dungeon.quickslot.contains( this )) {
|
if (Dungeon.quickslot.contains( this )) {
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -455,7 +455,7 @@ public class Item implements Bundlable {
|
||||||
user.busy();
|
user.busy();
|
||||||
|
|
||||||
Char enemy = Actor.findChar( cell );
|
Char enemy = Actor.findChar( cell );
|
||||||
QuickSlot.target( this, enemy );
|
QuickSlotButton.target(enemy);
|
||||||
|
|
||||||
float delay = TIME_TO_THROW;
|
float delay = TIME_TO_THROW;
|
||||||
if (this instanceof MissileWeapon) {
|
if (this instanceof MissileWeapon) {
|
||||||
|
|
|
@ -22,7 +22,7 @@ import java.util.ArrayList;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
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.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||||
import com.watabou.utils.Random;
|
import com.watabou.utils.Random;
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ public class KindOfWeapon extends EquipableItem {
|
||||||
hero.belongings.weapon = this;
|
hero.belongings.weapon = this;
|
||||||
activate( hero );
|
activate( hero );
|
||||||
|
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
|
|
||||||
cursedKnown = true;
|
cursedKnown = true;
|
||||||
if (cursed) {
|
if (cursed) {
|
||||||
|
|
|
@ -4,7 +4,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
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.utils.GLog;
|
||||||
import com.watabou.utils.Random;
|
import com.watabou.utils.Random;
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ public class CapeOfThorns extends Artifact {
|
||||||
BuffIndicator.refreshHero();
|
BuffIndicator.refreshHero();
|
||||||
GLog.w("Your Cape becomes inert again.");
|
GLog.w("Your Cape becomes inert again.");
|
||||||
}
|
}
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
}
|
}
|
||||||
spend(TICK);
|
spend(TICK);
|
||||||
return true;
|
return true;
|
||||||
|
@ -92,7 +92,7 @@ public class CapeOfThorns extends Artifact {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
return damage;
|
return damage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
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.utils.GLog;
|
||||||
import com.watabou.noosa.audio.Sample;
|
import com.watabou.noosa.audio.Sample;
|
||||||
import com.watabou.noosa.tweeners.AlphaTweener;
|
import com.watabou.noosa.tweeners.AlphaTweener;
|
||||||
|
@ -185,7 +185,7 @@ public class CloakOfShadows extends Artifact {
|
||||||
if (cooldown > 0)
|
if (cooldown > 0)
|
||||||
cooldown --;
|
cooldown --;
|
||||||
|
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
|
|
||||||
spend( TICK );
|
spend( TICK );
|
||||||
|
|
||||||
|
@ -227,7 +227,7 @@ public class CloakOfShadows extends Artifact {
|
||||||
GLog.p("Your Cloak Grows Stronger!");
|
GLog.p("Your Cloak Grows Stronger!");
|
||||||
}
|
}
|
||||||
|
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
|
|
||||||
spend( TICK );
|
spend( TICK );
|
||||||
|
|
||||||
|
@ -247,7 +247,7 @@ public class CloakOfShadows extends Artifact {
|
||||||
cooldown = 10 - (level / 3);
|
cooldown = 10 - (level / 3);
|
||||||
|
|
||||||
|
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
super.detach();
|
super.detach();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.GhostSprite;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.GhostSprite;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
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.utils.GLog;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.windows.WndQuest;
|
import com.shatteredpixel.shatteredpixeldungeon.windows.WndQuest;
|
||||||
import com.watabou.noosa.audio.Sample;
|
import com.watabou.noosa.audio.Sample;
|
||||||
|
@ -211,7 +211,7 @@ public class DriedRose extends Artifact {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
|
|
||||||
spend( TICK );
|
spend( TICK );
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
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.utils.GLog;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions;
|
import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions;
|
||||||
import com.watabou.noosa.audio.Sample;
|
import com.watabou.noosa.audio.Sample;
|
||||||
|
@ -202,7 +202,7 @@ public class TimekeepersHourglass extends Artifact {
|
||||||
} else if (cursed && Random.Int(10) == 0)
|
} else if (cursed && Random.Int(10) == 0)
|
||||||
((Hero) target).spend( TICK );
|
((Hero) target).spend( TICK );
|
||||||
|
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
|
|
||||||
spend( TICK );
|
spend( TICK );
|
||||||
|
|
||||||
|
@ -226,7 +226,7 @@ public class TimekeepersHourglass extends Artifact {
|
||||||
|
|
||||||
target.invisible++;
|
target.invisible++;
|
||||||
|
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
|
|
||||||
Dungeon.observe();
|
Dungeon.observe();
|
||||||
|
|
||||||
|
@ -262,7 +262,7 @@ public class TimekeepersHourglass extends Artifact {
|
||||||
charge --;
|
charge --;
|
||||||
}
|
}
|
||||||
|
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
|
|
||||||
if (charge <= 0){
|
if (charge <= 0){
|
||||||
detach();
|
detach();
|
||||||
|
@ -301,7 +301,7 @@ public class TimekeepersHourglass extends Artifact {
|
||||||
GameScene.freezeEmitters = false;
|
GameScene.freezeEmitters = false;
|
||||||
|
|
||||||
charge = 0;
|
charge = 0;
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
super.detach();
|
super.detach();
|
||||||
activeBuff = null;
|
activeBuff = null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicMappi
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRemoveCurse;
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRemoveCurse;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
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.utils.GLog;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag;
|
import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag;
|
||||||
import com.watabou.noosa.audio.Sample;
|
import com.watabou.noosa.audio.Sample;
|
||||||
|
@ -197,7 +197,7 @@ public class UnstableSpellbook extends Artifact {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
|
|
||||||
spend( TICK );
|
spend( TICK );
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.CellSelector;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.CellSelector;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
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.utils.GLog;
|
||||||
import com.watabou.utils.Bundle;
|
import com.watabou.utils.Bundle;
|
||||||
import com.watabou.utils.Callback;
|
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 );
|
final int cell = Ballistica.cast( curUser.pos, target, true, curWand.hitChars );
|
||||||
curUser.sprite.zap( cell );
|
curUser.sprite.zap( cell );
|
||||||
|
|
||||||
QuickSlot.target( curItem, Actor.findChar( cell ) );
|
QuickSlotButton.target(Actor.findChar(cell));
|
||||||
|
|
||||||
if (curWand.curCharges > 0) {
|
if (curWand.curCharges > 0) {
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,6 @@ import java.io.IOException;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.*;
|
import com.shatteredpixel.shatteredpixeldungeon.*;
|
||||||
import com.watabou.noosa.Camera;
|
import com.watabou.noosa.Camera;
|
||||||
import com.watabou.noosa.Game;
|
import com.watabou.noosa.Game;
|
||||||
import com.watabou.noosa.Gizmo;
|
|
||||||
import com.watabou.noosa.Group;
|
import com.watabou.noosa.Group;
|
||||||
import com.watabou.noosa.SkinnedBlock;
|
import com.watabou.noosa.SkinnedBlock;
|
||||||
import com.watabou.noosa.Visual;
|
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.BusyIndicator;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.GameLog;
|
import com.shatteredpixel.shatteredpixeldungeon.ui.GameLog;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.HealthIndicator;
|
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.StatusPane;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.Toast;
|
import com.shatteredpixel.shatteredpixeldungeon.ui.Toast;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.Toolbar;
|
import com.shatteredpixel.shatteredpixeldungeon.ui.Toolbar;
|
||||||
|
@ -597,7 +596,7 @@ public class GameScene extends PixelScene {
|
||||||
|
|
||||||
public static void ready() {
|
public static void ready() {
|
||||||
selectCell( defaultCellListener );
|
selectCell( defaultCellListener );
|
||||||
QuickSlot.cancel();
|
QuickSlotButton.cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final CellSelector.Listener defaultCellListener = new CellSelector.Listener() {
|
private static final CellSelector.Listener defaultCellListener = new CellSelector.Listener() {
|
||||||
|
|
|
@ -28,28 +28,30 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag;
|
import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag;
|
||||||
|
|
||||||
//TODO: add proper multi-quickslot functionality.
|
//TODO: investigate targeting with multiple quickslots
|
||||||
public class QuickSlot extends Button implements WndBag.Listener {
|
public class QuickSlotButton extends Button implements WndBag.Listener {
|
||||||
|
|
||||||
private static final String TXT_SELECT_ITEM = "Select an item for the quickslot";
|
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 Item itemInSlot;
|
||||||
private ItemSlot slot;
|
private ItemSlot slot;
|
||||||
|
|
||||||
private Image crossB;
|
private static Image crossB;
|
||||||
private Image crossM;
|
private static Image crossM;
|
||||||
|
|
||||||
private boolean targeting = false;
|
private static boolean targeting = false;
|
||||||
private Item lastItem = null;
|
private Item lastItem = null;
|
||||||
private Char lastTarget= null;
|
private static Char lastTarget= null;
|
||||||
|
|
||||||
public QuickSlot() {
|
public QuickSlotButton( int slotNum ) {
|
||||||
super();
|
super();
|
||||||
item( select() );
|
this.slotNum = slotNum;
|
||||||
|
item( select( slotNum ) );
|
||||||
|
|
||||||
instance = this;
|
instance[slotNum] = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -72,18 +74,14 @@ public class QuickSlot extends Button implements WndBag.Listener {
|
||||||
if (targeting) {
|
if (targeting) {
|
||||||
GameScene.handleCell( lastTarget.pos );
|
GameScene.handleCell( lastTarget.pos );
|
||||||
} else {
|
} else {
|
||||||
Item item = select();
|
Item item = select(slotNum);
|
||||||
if (item == lastItem) {
|
useTargeting();
|
||||||
useTargeting();
|
|
||||||
} else {
|
|
||||||
lastItem = item;
|
|
||||||
}
|
|
||||||
item.execute( Dungeon.hero );
|
item.execute( Dungeon.hero );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
protected boolean onLongClick() {
|
protected boolean onLongClick() {
|
||||||
return QuickSlot.this.onLongClick();
|
return QuickSlotButton.this.onLongClick();
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
protected void onTouchDown() {
|
protected void onTouchDown() {
|
||||||
|
@ -124,21 +122,15 @@ public class QuickSlot extends Button implements WndBag.Listener {
|
||||||
GameScene.selectItem( this, WndBag.Mode.QUICKSLOT, TXT_SELECT_ITEM );
|
GameScene.selectItem( this, WndBag.Mode.QUICKSLOT, TXT_SELECT_ITEM );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
private static Item select() {
|
|
||||||
return Dungeon.quickslot.getItem(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Item getItem(){
|
private static Item select(int slotNum){
|
||||||
Item item = select();
|
return Dungeon.quickslot.getItem( slotNum );
|
||||||
return (item != null && item.quantity() != 0)? item : null;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSelect( Item item ) {
|
public void onSelect( Item item ) {
|
||||||
if (item != null) {
|
if (item != null) {
|
||||||
Dungeon.quickslot.setSlot( 0 , item );
|
Dungeon.quickslot.setSlot( slotNum , item );
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -181,24 +173,26 @@ public class QuickSlot extends Button implements WndBag.Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void refresh() {
|
public static void refresh() {
|
||||||
if (instance != null) {
|
for (int i = 0; i < instance.length; i++) {
|
||||||
instance.item( select() );
|
if (instance[i] != null) {
|
||||||
|
instance[i].item(select(i));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void target( Item item, Char target ) {
|
public static void target( Char target ) {
|
||||||
if (item == instance.lastItem && target != Dungeon.hero) {
|
if (target != Dungeon.hero) {
|
||||||
instance.lastTarget = target;
|
lastTarget = target;
|
||||||
|
|
||||||
HealthIndicator.instance.target( target );
|
HealthIndicator.instance.target( target );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void cancel() {
|
public static void cancel() {
|
||||||
if (instance != null && instance.targeting) {
|
if (targeting) {
|
||||||
instance.crossB.visible = false;
|
crossB.visible = false;
|
||||||
instance.crossM.remove();
|
crossM.remove();
|
||||||
instance.targeting = false;
|
targeting = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -275,17 +275,19 @@ public class Toolbar extends Component {
|
||||||
|
|
||||||
private static class QuickslotTool extends Tool {
|
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 );
|
super( x, y, width, height );
|
||||||
|
this.slotNum = slotNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void createChildren() {
|
protected void createChildren() {
|
||||||
super.createChildren();
|
super.createChildren();
|
||||||
|
|
||||||
slot = new QuickSlot();
|
slot = new QuickSlotButton( slotNum );
|
||||||
add( slot );
|
add( slot );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.Icons;
|
import com.shatteredpixel.shatteredpixeldungeon.ui.Icons;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.ItemSlot;
|
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.shatteredpixel.shatteredpixeldungeon.utils.Utils;
|
||||||
import com.watabou.gltextures.TextureCache;
|
import com.watabou.gltextures.TextureCache;
|
||||||
import com.watabou.noosa.BitmapText;
|
import com.watabou.noosa.BitmapText;
|
||||||
|
@ -396,7 +396,7 @@ public class WndBag extends WndTabbed {
|
||||||
if (listener == null && item.defaultAction != null) {
|
if (listener == null && item.defaultAction != null) {
|
||||||
hide();
|
hide();
|
||||||
Dungeon.quickslot.setSlot( 0 , item );
|
Dungeon.quickslot.setSlot( 0 , item );
|
||||||
QuickSlot.refresh();
|
QuickSlotButton.refresh();
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user