- Making Energy actually a counter instead of it's own Player attribute. This should enable it to be displayed when hovering over the Player image.

This commit is contained in:
Sol
2016-09-03 02:32:49 +00:00
parent da81ed5130
commit b51ab053db
3 changed files with 15 additions and 20 deletions

View File

@@ -19,6 +19,7 @@ package forge.game.cost;
import forge.game.ability.AbilityUtils;
import forge.game.card.Card;
import forge.game.card.CounterType;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
@@ -80,7 +81,7 @@ public class CostPayEnergy extends CostPart {
amount = AbilityUtils.calculateAmount(ability.getHostCard(), getAmount(), ability);
}
} else {
return activator.getEnergy() >= amount;
return activator.getCounters(CounterType.ENERGY) >= amount;
}
return true;

View File

@@ -86,7 +86,6 @@ public class Player extends GameEntity implements Comparable<Player> {
private int life = 20;
private int startingLife = 20;
private int energy = 0;
private final Map<Card, Integer> assignedDamage = new HashMap<Card, Integer>();
private int spellsCastThisTurn = 0;
private int landsPlayedThisTurn = 0;
@@ -493,32 +492,27 @@ public class Player extends GameEntity implements Comparable<Player> {
return false;
}
public final int getEnergy() {
return energy;
}
public final void setEnergy(int newEnergy) { energy = newEnergy; }
public final boolean canPayEnergy(final int energyPayment) {
return energy >= energyPayment;
int cnt = getCounters(CounterType.ENERGY);
return cnt >= energyPayment;
}
public final int loseEnergy(int lostEnergy) {
if (lostEnergy > energy) {
return 0;
int cnt = getCounters(CounterType.ENERGY);
if (lostEnergy > cnt) {
return -1;
}
energy -= lostEnergy;
return lostEnergy;
cnt -= lostEnergy;
counters.put(CounterType.ENERGY, cnt);
return cnt;
}
public final boolean payEnergy(final int energyPayment, final Card source) {
if (energyPayment <= 0)
return true;
// rule 118.8
if (energy >= energyPayment) {
return (loseEnergy(energyPayment) > 0);
}
return false;
return canPayEnergy(energyPayment) && loseEnergy(energyPayment) > -1;
}
// This function handles damage after replacement and prevention effects are applied

View File

@@ -566,15 +566,15 @@ public class HumanCostDecision extends CostDecisionMakerBase {
@Override
public PaymentDecision visit(final CostPayEnergy cost) {
final String amount = cost.getAmount();
final int life = player.getLife();
final int energy = player.getCounters(CounterType.ENERGY);
Integer c = cost.convertAmount();
if (c == null) {
final String sVar = ability.getSVar(amount);
// Generalize this
if (sVar.startsWith("XChoice")) {
int limit = life;
final int maxLifePayment = limit < life ? limit : life;
int limit = energy;
final int maxLifePayment = limit < energy ? limit : energy;
c = chooseXValue(maxLifePayment);
} else {
c = AbilityUtils.calculateAmount(source, amount, ability);