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

View File

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

View File

@ -473,11 +473,7 @@ public class Item implements Bundlable {
} }
public static void updateQuickslot() { public static void updateQuickslot() {
updateQuickslot(true); QuickSlotButton.refresh();
}
public static void updateQuickslot(boolean full) {
QuickSlotButton.refresh(full);
} }
private static final String QUANTITY = "quantity"; private static final String QUANTITY = "quantity";

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -162,7 +162,7 @@ public class Pickaxe extends Weapon {
protected boolean act() { protected boolean act() {
if (!defender.isAlive()){ if (!defender.isAlive()){
bloodStained = true; bloodStained = true;
updateQuickslot(true); updateQuickslot();
} }
Actor.remove(this); 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); if (overcharge) curCharges = Math.min(maxCharges+(int)amt, curCharges+1);
else curCharges = Math.min(maxCharges, curCharges+1); else curCharges = Math.min(maxCharges, curCharges+1);
partialCharge--; partialCharge--;
updateQuickslot(false); updateQuickslot();
} }
} }
@ -581,7 +581,7 @@ public abstract class Wand extends Item {
while (partialCharge >= 1 && curCharges < maxCharges) { while (partialCharge >= 1 && curCharges < maxCharges) {
partialCharge--; partialCharge--;
curCharges++; curCharges++;
updateQuickslot(false); updateQuickslot();
} }
if (curCharges == maxCharges){ if (curCharges == maxCharges){
@ -623,7 +623,7 @@ public abstract class Wand extends Item {
partialCharge--; partialCharge--;
} }
curCharges = Math.min(curCharges, maxCharges); curCharges = Math.min(curCharges, maxCharges);
updateQuickslot(false); updateQuickslot();
} }
} }

View File

@ -84,7 +84,7 @@ public class WandOfBlastWave extends DamageWand {
processSoulMark(ch, chargesPerCast()); processSoulMark(ch, chargesPerCast());
if (ch.alignment != Char.Alignment.ALLY) ch.damage(damageRoll(), this); 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); Ballistica trajectory = new Ballistica(ch.pos, ch.pos + i, Ballistica.MAGIC_BOLT);
int strength = 1 + Math.round(buffedLvl() / 2f); int strength = 1 + Math.round(buffedLvl() / 2f);
throwChar(ch, trajectory, strength, false); throwChar(ch, trajectory, strength, false);
@ -101,7 +101,7 @@ public class WandOfBlastWave extends DamageWand {
processSoulMark(ch, chargesPerCast()); processSoulMark(ch, chargesPerCast());
ch.damage(damageRoll(), this); 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); Ballistica trajectory = new Ballistica(ch.pos, bolt.path.get(bolt.dist + 1), Ballistica.MAGIC_BOLT);
int strength = buffedLvl() + 3; int strength = buffedLvl() + 3;
throwChar(ch, trajectory, strength, false); 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.messages.Messages;
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.QuickSlotButton;
import com.watabou.noosa.Image; import com.watabou.noosa.Image;
import com.watabou.noosa.audio.Sample; import com.watabou.noosa.audio.Sample;
import com.watabou.utils.Bundle; import com.watabou.utils.Bundle;
@ -111,7 +110,7 @@ public class WandOfMagicMissile extends DamageWand {
@Override @Override
public void detach() { public void detach() {
super.detach(); super.detach();
QuickSlotButton.refresh(false); updateQuickslot();
} }
public int level(){ public int level(){

View File

@ -183,7 +183,7 @@ public class QuickSlotButton extends Button implements WndBag.Listener {
public void onSelect( Item item ) { public void onSelect( Item item ) {
if (item != null) { if (item != null) {
Dungeon.quickslot.setSlot( slotNum , item ); Dungeon.quickslot.setSlot( slotNum , item );
refresh(false); refresh();
} }
} }
@ -257,17 +257,10 @@ public class QuickSlotButton extends Button implements WndBag.Listener {
} }
public static void refresh() { public static void refresh() {
refresh(true);
}
public static void refresh( boolean full ) {
for (int i = 0; i < instance.length; i++) { for (int i = 0; i < instance.length; i++) {
if (instance[i] != null) { if (instance[i] != null) {
if (full) {
instance[i].item(select(i)); instance[i].item(select(i));
} else { instance[i].enable(instance[i].active);
instance[i].slot.updateText();
}
} }
} }
} }