diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/views/VField.java b/forge-gui-desktop/src/main/java/forge/screens/match/views/VField.java index eefa8b4d78c..a2a5abbae7a 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/views/VField.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/views/VField.java @@ -76,6 +76,7 @@ public class VField implements IVDoc { private final FLabel lblAvatar = new FLabel.Builder().fontAlign(SwingConstants.CENTER).iconScaleFactor(1.0f).build(); private final FLabel lblLife = new FLabel.Builder().fontAlign(SwingConstants.CENTER).fontStyle(Font.BOLD).build(); private final FLabel lblPoison = new FLabel.Builder().fontAlign(SwingConstants.CENTER).fontStyle(Font.BOLD).icon(FSkin.getImage(FSkinProp.IMG_ZONE_POISON)).iconInBackground().build(); + private final FLabel lblEnergy = new FLabel.Builder().fontAlign(SwingConstants.CENTER).fontStyle(Font.BOLD).icon(FSkin.getImage(FSkinProp.IMG_ENERGY)).iconInBackground().build(); private final PhaseIndicator phaseIndicator = new PhaseIndicator(); @@ -108,6 +109,7 @@ public class VField implements IVDoc { lblAvatar.setFocusable(false); lblLife.setFocusable(false); lblPoison.setFocusable(false); + lblEnergy.setFocusable(false); avatarArea.setOpaque(false); avatarArea.setBackground(FSkin.getColor(FSkin.Colors.CLR_HOVER)); @@ -210,6 +212,25 @@ public class VField implements IVDoc { detailsPanel.updateZones(); } + private void addLblEnergy() { + if (lblEnergy.isShowing() || lblPoison.isShowing()) { + return; // poison takes precedence + } + avatarArea.remove(lblLife); + lblLife.setIcon(FSkin.getImage(FSkinProp.ICO_QUEST_LIFE)); + avatarArea.add(lblLife, "w 50%!, h 20px!, split 2"); + avatarArea.add(lblEnergy, "w 50%!, h 20px!, wrap"); + } + + private void removeLblEnergy() { + if (!lblEnergy.isShowing()) { + return; + } + avatarArea.remove(lblEnergy); + avatarArea.remove(lblLife); + avatarArea.add(lblLife, "w 100%!, h 20px!, wrap"); + } + private void addLblPoison() { if (lblPoison.isShowing()) { return; @@ -238,9 +259,12 @@ public class VField implements IVDoc { lblLife.setForeground(Color.RED); } - // Update poison counters + // Update poison and/or energy counters, poison counters take precedence final int poison = player.getCounters(CounterType.POISON); + final int energy = player.getCounters(CounterType.ENERGY); + if (poison > 0) { + removeLblEnergy(); addLblPoison(); lblPoison.setText(String.valueOf(poison)); if (poison < POISON_CRITICAL) { @@ -252,6 +276,15 @@ public class VField implements IVDoc { removeLblPoison(); } + if (energy > 0) { + if (poison == 0) { + addLblEnergy(); + lblEnergy.setText(String.valueOf(energy)); + } + } else { + removeLblEnergy(); + } + final boolean highlighted = isHighlighted(); this.avatarArea.setBorder(highlighted ? borderAvatarHighlighted : borderAvatarSimple ); this.avatarArea.setOpaque(highlighted);