v0.9.3: final quickslot visual fix

this ditches the 'text only' update in favor of just always doing the full update (as before) and re-assigned whether the slots are enabled
This commit is contained in:
Evan Debenham 2021-04-28 19:56:12 -04:00
parent f52ced5e74
commit 8d526cb50e
24 changed files with 61 additions and 73 deletions

View File

@ -39,7 +39,7 @@ public class Degrade extends FlavourBuff {
@Override
public boolean attachTo(Char target) {
if (super.attachTo(target)){
Item.updateQuickslot(false);
Item.updateQuickslot();
if (target instanceof Hero) ((Hero) target).updateHT(false);
return true;
}
@ -50,7 +50,7 @@ public class Degrade extends FlavourBuff {
public void detach() {
super.detach();
if (target instanceof Hero) ((Hero) target).updateHT(false);
Item.updateQuickslot(false);
Item.updateQuickslot();
}
//called in Item.buffedLevel()

View File

@ -37,7 +37,7 @@ public class ScrollEmpower extends Buff {
@Override
public void detach() {
super.detach();
Item.updateQuickslot(false);
Item.updateQuickslot();
}
@Override

View File

@ -471,13 +471,9 @@ public class Item implements Bundlable {
public String status() {
return quantity != 1 ? Integer.toString( quantity ) : null;
}
public static void updateQuickslot() {
updateQuickslot(true);
}
public static void updateQuickslot(boolean full) {
QuickSlotButton.refresh(full);
public static void updateQuickslot() {
QuickSlotButton.refresh();
}
private static final String QUANTITY = "quantity";

View File

@ -168,7 +168,7 @@ public class Waterskin extends Item {
GLog.p( Messages.get(this, "full") );
}
updateQuickslot(false);
updateQuickslot();
}
public void fill() {

View File

@ -207,7 +207,7 @@ abstract public class ClassArmor extends Armor {
LockedFloor lock = target.buff(LockedFloor.class);
if (lock == null || lock.regenOn()) {
charge += 100 / 500f; //500 turns to full charge
updateQuickslot(false);
updateQuickslot();
if (charge > 100) {
charge = 100;
}

View File

@ -96,7 +96,7 @@ public class AlchemistsToolkit extends Artifact {
if (partialCharge >= 1){
partialCharge--;
charge++;
updateQuickslot(false);
updateQuickslot();
}
}
}
@ -126,7 +126,7 @@ public class AlchemistsToolkit extends Artifact {
break;
}
}
updateQuickslot(false);
updateQuickslot();
}
@ -195,7 +195,7 @@ public class AlchemistsToolkit extends Artifact {
partialCharge = 0;
}
updateQuickslot(false);
updateQuickslot();
}
} else
partialCharge = 0;

View File

@ -53,7 +53,7 @@ public class CapeOfThorns extends Artifact {
public void charge(Hero target, float amount) {
if (cooldown == 0) {
charge += Math.round(4*amount);
updateQuickslot(false);
updateQuickslot();
}
if (charge >= chargeCap){
target.buff(Thorns.class).proc(0, null, null);
@ -83,7 +83,7 @@ public class CapeOfThorns extends Artifact {
if (cooldown == 0) {
GLog.w( Messages.get(this, "inert") );
}
updateQuickslot(false);
updateQuickslot();
}
spend(TICK);
return true;
@ -116,7 +116,7 @@ public class CapeOfThorns extends Artifact {
}
}
updateQuickslot(false);
updateQuickslot();
return damage;
}

View File

@ -169,14 +169,14 @@ public class CloakOfShadows extends Artifact {
if (partialCharge >= 1){
partialCharge--;
charge++;
updateQuickslot(false);
updateQuickslot();
}
}
}
public void overCharge(int amount){
charge = Math.min(charge+amount, chargeCap+amount);
updateQuickslot(false);
updateQuickslot();
}
@Override
@ -239,7 +239,7 @@ public class CloakOfShadows extends Artifact {
if (cooldown > 0)
cooldown --;
updateQuickslot(false);
updateQuickslot();
spend( TICK );
@ -325,7 +325,7 @@ public class CloakOfShadows extends Artifact {
}
turnsToCost = 4;
}
updateQuickslot(false);
updateQuickslot();
}
spend( TICK );
@ -334,7 +334,7 @@ public class CloakOfShadows extends Artifact {
}
public void dispel(){
updateQuickslot(false);
updateQuickslot();
detach();
}
@ -360,7 +360,7 @@ public class CloakOfShadows extends Artifact {
if (target.invisible > 0) target.invisible--;
updateQuickslot(false);
updateQuickslot();
super.detach();
}

View File

@ -174,7 +174,7 @@ public class DriedRose extends Artifact {
Talent.onArtifactUsed(hero);
charge = 0;
partialCharge = 0;
updateQuickslot(false);
updateQuickslot();
} else
GLog.i( Messages.get(this, "no_space") );
@ -282,12 +282,12 @@ public class DriedRose extends Artifact {
partialCharge = 0;
GLog.p(Messages.get(DriedRose.class, "charged"));
}
updateQuickslot(false);
updateQuickslot();
}
} else {
int heal = Math.round((1 + level()/3f)*amount);
ghost.HP = Math.min( ghost.HT, ghost.HP + heal);
updateQuickslot(false);
updateQuickslot();
}
}
@ -376,7 +376,7 @@ public class DriedRose extends Artifact {
LockedFloor lock = target.buff(LockedFloor.class);
if (ghost.HP < ghost.HT && (lock == null || lock.regenOn())) {
partialCharge += (ghost.HT / 1000f) * RingOfEnergy.artifactChargeMultiplier(target);
updateQuickslot(false);
updateQuickslot();
if (partialCharge > 1) {
ghost.HP++;
@ -421,7 +421,7 @@ public class DriedRose extends Artifact {
}
updateQuickslot(false);
updateQuickslot();
return true;
}
@ -667,7 +667,7 @@ public class DriedRose extends Artifact {
super.damage( dmg, src );
//for the rose status indicator
Item.updateQuickslot(false);
Item.updateQuickslot();
}
@Override

View File

@ -171,7 +171,7 @@ public class EtherealChains extends Artifact {
} else {
charge -= chargeUse;
Talent.onArtifactUsed(hero);
updateQuickslot(false);
updateQuickslot();
}
hero.busy();
@ -228,7 +228,7 @@ public class EtherealChains extends Artifact {
} else {
charge -= chargeUse;
Talent.onArtifactUsed(hero);
updateQuickslot(false);
updateQuickslot();
}
hero.busy();
@ -261,7 +261,7 @@ public class EtherealChains extends Artifact {
if (partialCharge >= 1){
partialCharge--;
charge++;
updateQuickslot(false);
updateQuickslot();
}
}
}
@ -300,7 +300,7 @@ public class EtherealChains extends Artifact {
charge ++;
}
updateQuickslot(false);
updateQuickslot();
spend( TICK );

View File

@ -128,7 +128,7 @@ public class HornOfPlenty extends Artifact {
else if (charge >= 5) image = ItemSpriteSheet.ARTIFACT_HORN2;
else image = ItemSpriteSheet.ARTIFACT_HORN1;
updateQuickslot( image != oldImage );
updateQuickslot();
}
} else if (action.equals(AC_STORE)){
@ -162,7 +162,7 @@ public class HornOfPlenty extends Artifact {
else if (charge >= 5) image = ItemSpriteSheet.ARTIFACT_HORN2;
else image = ItemSpriteSheet.ARTIFACT_HORN1;
updateQuickslot( image != oldImage );
updateQuickslot();
}
}
}
@ -259,7 +259,7 @@ public class HornOfPlenty extends Artifact {
else if (charge >= 5) image = ItemSpriteSheet.ARTIFACT_HORN2;
else image = ItemSpriteSheet.ARTIFACT_HORN1;
updateQuickslot( image != oldImage );
updateQuickslot();
if (charge == chargeCap){
GLog.p( Messages.get(HornOfPlenty.class, "full") );

View File

@ -201,7 +201,7 @@ public class LloydsBeacon extends Artifact {
Invisibility.dispel();
charge -= Dungeon.depth > 20 ? 2 : 1;
updateQuickslot(false);
updateQuickslot();
if (Actor.findChar(target) == curUser){
ScrollOfTeleportation.teleportHero(curUser);
@ -330,7 +330,7 @@ public class LloydsBeacon extends Artifact {
}
}
updateQuickslot(false);
updateQuickslot();
spend( TICK );
return true;
}

View File

@ -49,7 +49,7 @@ public class MasterThievesArmband extends Artifact {
@Override
public void charge(Hero target, float amount) {
charge += Math.round(10*amount);
updateQuickslot(false);
updateQuickslot();
}
@Override

View File

@ -93,7 +93,7 @@ public class SandalsOfNature extends Artifact {
Camera.main.shake(1, 0.4f);
charge = 0;
Talent.onArtifactUsed(Dungeon.hero);
updateQuickslot(false);
updateQuickslot();
}
}
}
@ -185,7 +185,7 @@ public class SandalsOfNature extends Artifact {
charge++;
partialCharge--;
}
updateQuickslot(false);
updateQuickslot();
}
}
}

View File

@ -197,7 +197,7 @@ public class TalismanOfForesight extends Artifact {
upgrade();
GLog.p( Messages.get(TalismanOfForesight.class, "levelup") );
}
updateQuickslot(false);
updateQuickslot();
//5 charge at 2 tiles, up to 30 charge at 25 tiles
charge -= 3 + dist*1.08f;
@ -211,7 +211,7 @@ public class TalismanOfForesight extends Artifact {
partialCharge--;
}
Talent.onArtifactUsed(Dungeon.hero);
updateQuickslot(false);
updateQuickslot();
Dungeon.observe();
Dungeon.hero.checkVisibleMobs();
GameScene.updateFog();
@ -311,7 +311,7 @@ public class TalismanOfForesight extends Artifact {
if (partialCharge > 1 && charge < chargeCap) {
partialCharge--;
charge++;
updateQuickslot(false);
updateQuickslot();
} else if (charge >= chargeCap) {
partialCharge = 0;
GLog.p( Messages.get(TalismanOfForesight.class, "full_charge") );

View File

@ -150,7 +150,7 @@ public class TimekeepersHourglass extends Artifact {
if (partialCharge >= 1){
partialCharge--;
charge++;
updateQuickslot(false);
updateQuickslot();
}
}
}
@ -234,7 +234,7 @@ public class TimekeepersHourglass extends Artifact {
} else if (cursed && Random.Int(10) == 0)
((Hero) target).spend( TICK );
updateQuickslot(false);
updateQuickslot();
spend( TICK );
@ -267,7 +267,7 @@ public class TimekeepersHourglass extends Artifact {
target.invisible++;
updateQuickslot(false);
updateQuickslot();
Dungeon.observe();
@ -318,7 +318,7 @@ public class TimekeepersHourglass extends Artifact {
charge --;
}
updateQuickslot(false);
updateQuickslot();
if (charge < 0){
charge = 0;
@ -341,7 +341,7 @@ public class TimekeepersHourglass extends Artifact {
@Override
public void detach(){
updateQuickslot(false);
updateQuickslot();
super.detach();
activeBuff = null;
triggerPresses();

View File

@ -168,7 +168,7 @@ public class UnstableSpellbook extends Artifact {
scroll.doRead();
Talent.onArtifactUsed(Dungeon.hero);
}
updateQuickslot(false);
updateQuickslot();
}
} else if (action.equals( AC_ADD )) {
@ -222,7 +222,7 @@ public class UnstableSpellbook extends Artifact {
if (partialCharge >= 1){
partialCharge--;
charge++;
updateQuickslot(false);
updateQuickslot();
}
}
}
@ -297,7 +297,7 @@ public class UnstableSpellbook extends Artifact {
}
}
updateQuickslot(false);
updateQuickslot();
spend( TICK );

View File

@ -334,7 +334,7 @@ public class Potion extends Item {
if (!anonymous) {
if (!isKnown()) {
handler.know(this);
updateQuickslot(false);
updateQuickslot();
Potion p = Dungeon.hero.belongings.getItem(getClass());
if (p != null) p.setAction();
if (ExoticPotion.regToExo.get(getClass()) != null) {

View File

@ -98,7 +98,7 @@ public class ExoticPotion extends Potion {
public void setKnown() {
if (!isKnown()) {
handler.know(exoToReg.get(this.getClass()));
updateQuickslot(false);
updateQuickslot();
Potion p = Dungeon.hero.belongings.getItem(getClass());
if (p != null) p.setAction();
p = Dungeon.hero.belongings.getItem(exoToReg.get(this.getClass()));

View File

@ -162,7 +162,7 @@ public class Pickaxe extends Weapon {
protected boolean act() {
if (!defender.isAlive()){
bloodStained = true;
updateQuickslot(true);
updateQuickslot();
}
Actor.remove(this);

View File

@ -160,7 +160,7 @@ public abstract class Wand extends Item {
if (overcharge) curCharges = Math.min(maxCharges+(int)amt, curCharges+1);
else curCharges = Math.min(maxCharges, curCharges+1);
partialCharge--;
updateQuickslot(false);
updateQuickslot();
}
}
@ -581,7 +581,7 @@ public abstract class Wand extends Item {
while (partialCharge >= 1 && curCharges < maxCharges) {
partialCharge--;
curCharges++;
updateQuickslot(false);
updateQuickslot();
}
if (curCharges == maxCharges){
@ -623,7 +623,7 @@ public abstract class Wand extends Item {
partialCharge--;
}
curCharges = Math.min(curCharges, maxCharges);
updateQuickslot(false);
updateQuickslot();
}
}

View File

@ -84,7 +84,7 @@ public class WandOfBlastWave extends DamageWand {
processSoulMark(ch, chargesPerCast());
if (ch.alignment != Char.Alignment.ALLY) ch.damage(damageRoll(), this);
if (ch.isAlive() && ch.pos == bolt.collisionPos + i) {
if (ch.pos == bolt.collisionPos + i) {
Ballistica trajectory = new Ballistica(ch.pos, ch.pos + i, Ballistica.MAGIC_BOLT);
int strength = 1 + Math.round(buffedLvl() / 2f);
throwChar(ch, trajectory, strength, false);
@ -101,7 +101,7 @@ public class WandOfBlastWave extends DamageWand {
processSoulMark(ch, chargesPerCast());
ch.damage(damageRoll(), this);
if (ch.isAlive() && bolt.path.size() > bolt.dist+1 && ch.pos == bolt.collisionPos) {
if (bolt.path.size() > bolt.dist+1 && ch.pos == bolt.collisionPos) {
Ballistica trajectory = new Ballistica(ch.pos, bolt.path.get(bolt.dist + 1), Ballistica.MAGIC_BOLT);
int strength = buffedLvl() + 3;
throwChar(ch, trajectory, strength, false);

View File

@ -33,7 +33,6 @@ import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton;
import com.watabou.noosa.Image;
import com.watabou.noosa.audio.Sample;
import com.watabou.utils.Bundle;
@ -111,7 +110,7 @@ public class WandOfMagicMissile extends DamageWand {
@Override
public void detach() {
super.detach();
QuickSlotButton.refresh(false);
updateQuickslot();
}
public int level(){

View File

@ -183,7 +183,7 @@ public class QuickSlotButton extends Button implements WndBag.Listener {
public void onSelect( Item item ) {
if (item != null) {
Dungeon.quickslot.setSlot( slotNum , item );
refresh(false);
refresh();
}
}
@ -255,19 +255,12 @@ public class QuickSlotButton extends Button implements WndBag.Listener {
//couldn't find a cell, give up.
return -1;
}
public static void refresh() {
refresh(true);
}
public static void refresh( boolean full ) {
public static void refresh() {
for (int i = 0; i < instance.length; i++) {
if (instance[i] != null) {
if (full) {
instance[i].item(select(i));
} else {
instance[i].slot.updateText();
}
instance[i].item(select(i));
instance[i].enable(instance[i].active);
}
}
}