Fix so poison counters show up properly

This commit is contained in:
drdev
2015-11-24 19:42:45 +00:00
parent f224cf9b0e
commit 3b81f30e28
6 changed files with 32 additions and 14 deletions

View File

@@ -191,6 +191,16 @@ public class CardView extends GameEntityView {
public Map<CounterType, Integer> getCounters() { public Map<CounterType, Integer> getCounters() {
return get(TrackableProperty.Counters); return get(TrackableProperty.Counters);
} }
public int getCounters(CounterType counterType) {
final Map<CounterType, Integer> counters = getCounters();
if (counters != null) {
Integer count = counters.get(counterType);
if (count != null) {
return count;
}
}
return 0;
}
public boolean hasSameCounters(CardView otherCard) { public boolean hasSameCounters(CardView otherCard) {
Map<CounterType, Integer> counters = getCounters(); Map<CounterType, Integer> counters = getCounters();
if (counters == null) { if (counters == null) {

View File

@@ -7,6 +7,7 @@ import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import forge.game.card.CounterType; import forge.game.card.CounterType;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import com.google.common.base.Objects; import com.google.common.base.Objects;
@@ -153,16 +154,19 @@ public class PlayerView extends GameEntityView {
set(TrackableProperty.Life, p.getLife()); set(TrackableProperty.Life, p.getLife());
} }
public int getPoisonCounters() {
return get(TrackableProperty.PoisonCounters);
}
void updatePoisonCounters(Player p) {
set(TrackableProperty.PoisonCounters, p.getPoisonCounters());
}
public Map<CounterType, Integer> getCounters() { public Map<CounterType, Integer> getCounters() {
return get(TrackableProperty.Counters); return get(TrackableProperty.Counters);
} }
public int getCounters(CounterType counterType) {
final Map<CounterType, Integer> counters = getCounters();
if (counters != null) {
Integer count = counters.get(counterType);
if (count != null) {
return count;
}
}
return 0;
}
void updateCounters(Player p) { void updateCounters(Player p) {
set(TrackableProperty.Counters, p.getCounters()); set(TrackableProperty.Counters, p.getCounters());
} }

View File

@@ -39,6 +39,7 @@ import com.google.common.collect.Maps;
import forge.game.GameEntityView; import forge.game.GameEntityView;
import forge.game.card.CardView; import forge.game.card.CardView;
import forge.game.card.CounterType;
import forge.game.player.PlayerView; import forge.game.player.PlayerView;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
import forge.toolbox.FButton; import forge.toolbox.FButton;
@@ -429,7 +430,7 @@ public class VAssignDamage {
if (card == null) { if (card == null) {
if (defender instanceof PlayerView) { if (defender instanceof PlayerView) {
final PlayerView p = (PlayerView)defender; final PlayerView p = (PlayerView)defender;
lethalDamage = attackerHasInfect ? matchUI.getGameView().getPoisonCountersToLose() - p.getPoisonCounters() : p.getLife(); lethalDamage = attackerHasInfect ? matchUI.getGameView().getPoisonCountersToLose() - p.getCounters(CounterType.POISON) : p.getLife();
} }
else if (defender instanceof CardView) { // planeswalker else if (defender instanceof CardView) { // planeswalker
final CardView pw = (CardView)defender; final CardView pw = (CardView)defender;

View File

@@ -29,6 +29,7 @@ import javax.swing.border.LineBorder;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
import forge.assets.FSkinProp; import forge.assets.FSkinProp;
import forge.game.card.CounterType;
import forge.game.player.PlayerView; import forge.game.player.PlayerView;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.framework.DragCell; import forge.gui.framework.DragCell;
@@ -238,7 +239,7 @@ public class VField implements IVDoc<CField> {
} }
// Update poison counters // Update poison counters
final int poison = player.getPoisonCounters(); final int poison = player.getCounters(CounterType.POISON);
if (poison > 0) { if (poison > 0) {
addLblPoison(); addLblPoison();
lblPoison.setText(String.valueOf(poison)); lblPoison.setText(String.valueOf(poison));

View File

@@ -26,6 +26,7 @@ import forge.assets.FSkinColor.Colors;
import forge.card.CardZoom; import forge.card.CardZoom;
import forge.game.GameEntityView; import forge.game.GameEntityView;
import forge.game.card.CardView; import forge.game.card.CardView;
import forge.game.card.CounterType;
import forge.game.player.PlayerView; import forge.game.player.PlayerView;
import forge.screens.match.MatchController; import forge.screens.match.MatchController;
import forge.toolbox.FCardPanel; import forge.toolbox.FCardPanel;
@@ -439,7 +440,7 @@ public class VAssignDamage extends FDialog {
if (source == null) { if (source == null) {
if (defender instanceof PlayerView) { if (defender instanceof PlayerView) {
PlayerView p = (PlayerView)defender; PlayerView p = (PlayerView)defender;
lethalDamage = attackerHasInfect ? MatchController.instance.getGameView().getPoisonCountersToLose() - p.getPoisonCounters() : p.getLife(); lethalDamage = attackerHasInfect ? MatchController.instance.getGameView().getPoisonCountersToLose() - p.getCounters(CounterType.POISON) : p.getLife();
} }
else if (defender instanceof CardView) { // planeswalker else if (defender instanceof CardView) { // planeswalker
CardView pw = (CardView)defender; CardView pw = (CardView)defender;

View File

@@ -15,6 +15,7 @@ import forge.assets.FSkinFont;
import forge.assets.FSkinImage; import forge.assets.FSkinImage;
import forge.assets.FSkinColor.Colors; import forge.assets.FSkinColor.Colors;
import forge.game.card.CardView; import forge.game.card.CardView;
import forge.game.card.CounterType;
import forge.game.player.PlayerView; import forge.game.player.PlayerView;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.model.FModel; import forge.model.FModel;
@@ -331,7 +332,7 @@ public class VPlayerPanel extends FContainer {
private class LifeLabel extends FDisplayObject { private class LifeLabel extends FDisplayObject {
private int life = player.getLife(); private int life = player.getLife();
private int poisonCounters = player.getPoisonCounters(); private int poisonCounters = player.getCounters(CounterType.POISON);
private String lifeStr = String.valueOf(life); private String lifeStr = String.valueOf(life);
private LifeLabel() { private LifeLabel() {
@@ -349,13 +350,13 @@ public class VPlayerPanel extends FContainer {
lifeStr = String.valueOf(life); lifeStr = String.valueOf(life);
} }
delta = player.getPoisonCounters() - poisonCounters; delta = player.getCounters(CounterType.POISON) - poisonCounters;
if (delta != 0) { if (delta != 0) {
if (delta > 0) { if (delta > 0) {
//TODO: Show animation on avatar for gaining poison counters //TODO: Show animation on avatar for gaining poison counters
vibrateDuration += delta * 200; vibrateDuration += delta * 200;
} }
poisonCounters = player.getPoisonCounters(); poisonCounters = player.getCounters(CounterType.POISON);
} }
//when gui player loses life, vibrate device for a length of time based on amount of life lost //when gui player loses life, vibrate device for a length of time based on amount of life lost