diff --git a/forge-game/src/main/java/forge/game/player/PlayerView.java b/forge-game/src/main/java/forge/game/player/PlayerView.java index 344ae085b68..2499fb760fd 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerView.java +++ b/forge-game/src/main/java/forge/game/player/PlayerView.java @@ -1,11 +1,9 @@ package forge.game.player; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; +import forge.card.CardType; import forge.card.mana.ManaAtom; import forge.game.card.CounterType; @@ -311,6 +309,20 @@ public class PlayerView extends GameEntityView { TrackableCollection cards = get(zoneProp); return cards == null ? 0 : cards.size(); } + + public int getZoneTypes(TrackableProperty zoneProp) { + TrackableCollection cards = get(zoneProp); + HashSet types = new HashSet<>(); + if (cards == null) + return 0; + + for(CardView c : cards) { + types.addAll((Collection) c.getCurrentState().getType().getCoreTypes()); + } + + return cards.size(); + } + private static TrackableProperty getZoneProp(final ZoneType zone) { switch (zone) { case Ante: diff --git a/forge-gui-desktop/src/main/java/forge/toolbox/special/PlayerDetailsPanel.java b/forge-gui-desktop/src/main/java/forge/toolbox/special/PlayerDetailsPanel.java index 79d2221b9fe..6987291eb8e 100644 --- a/forge-gui-desktop/src/main/java/forge/toolbox/special/PlayerDetailsPanel.java +++ b/forge-gui-desktop/src/main/java/forge/toolbox/special/PlayerDetailsPanel.java @@ -11,6 +11,7 @@ import javax.swing.JPanel; import javax.swing.SwingConstants; import forge.card.mana.ManaAtom; +import forge.trackable.TrackableProperty; import net.miginfocom.swing.MigLayout; import org.apache.commons.lang3.StringUtils; @@ -33,7 +34,7 @@ public class PlayerDetailsPanel extends JPanel { // Info labels private final DetailLabel lblHand = new DetailLabel(FSkinProp.IMG_ZONE_HAND, "Hand (%s/%s)"); - private final DetailLabel lblGraveyard = new DetailLabel(FSkinProp.IMG_ZONE_GRAVEYARD, "Graveyard (%s)"); + private final DetailLabel lblGraveyard = new DetailLabel(FSkinProp.IMG_ZONE_GRAVEYARD, "Graveyard (%s) Types[%s]"); private final DetailLabel lblLibrary = new DetailLabel(FSkinProp.IMG_ZONE_LIBRARY, "Library (%s)"); private final DetailLabel lblExile = new DetailLabel(FSkinProp.IMG_ZONE_EXILE, "Exile (%s)"); private final DetailLabel lblFlashback = new DetailLabel(FSkinProp.IMG_ZONE_FLASHBACK, "Flashback cards (%s)"); @@ -110,20 +111,20 @@ public class PlayerDetailsPanel extends JPanel { /** * Handles observer update of player Zones - hand, graveyard, etc. - * - * @param p0   {@link forge.game.player.Player} */ public void updateZones() { final String handSize = String.valueOf(player.getHandSize()), graveyardSize = String.valueOf(player.getGraveyardSize()), + deliriumCount = String.valueOf(player.getZoneTypes(TrackableProperty.Graveyard)), librarySize = String.valueOf(player.getLibrarySize()), flashbackSize = String.valueOf(player.getFlashbackSize()), exileSize = String.valueOf(player.getExileSize()), commandSize = String.valueOf(player.getCommandSize()); + lblHand.setText(handSize); lblHand.setToolTip(handSize, player.getMaxHandString()); lblGraveyard.setText(graveyardSize); - lblGraveyard.setToolTip(graveyardSize); + lblGraveyard.setToolTip(graveyardSize, deliriumCount); lblLibrary.setText(librarySize); lblLibrary.setToolTip(librarySize); lblFlashback.setText(flashbackSize);