package magic.ui.duel.viewerinfo;
import java.util.ArrayList;
import java.util.List;
import javax.swing.ImageIcon;
import magic.model.MagicCardList;
import magic.model.MagicCounterType;
import magic.model.MagicGame;
import magic.model.MagicPermanent;
import magic.model.MagicPlayer;
import magic.model.MagicType;
import magic.ui.MagicImages;
public class PlayerViewerInfo {
public final MagicPlayer player;
private final boolean isPlayerTurn;
private final String name;
public final int life;
public final int poison;
public final int energy;
public final int experience;
public final int preventDamage;
public final int lands;
public final MagicCardList hand;
public final MagicCardList graveyard;
public final MagicCardList exile;
public final MagicCardList library;
public final List<PermanentViewerInfo> permanents;
private final boolean isAi;
private final boolean isMonarch;
public final String playerLabel;
private final ImageIcon avatar;
private int gamesWon;
PlayerViewerInfo(final MagicGame game, final MagicPlayer player) {
this.player = player;
isPlayerTurn = player == game.getTurnPlayer();
name = player.getName();
playerLabel = player.getPlayerDefinition().getProfile().getPlayerLabel();
life = player.getLife();
poison = player.getCounters(MagicCounterType.Poison);
energy = player.getCounters(MagicCounterType.Energy);
experience = player.getCounters(MagicCounterType.Experience);
preventDamage = player.getPreventDamage();
lands = player.getNrOfPermanents(MagicType.Land);
hand = new MagicCardList(player.getHand());
graveyard = new MagicCardList(player.getGraveyard());
exile = new MagicCardList(player.getExile());
library = new MagicCardList(player.getLibrary());
isAi = player.isArtificial();
isMonarch = player.isMonarch();
permanents = new ArrayList<>();
for (final MagicPermanent permanent : player.getPermanents()) {
permanents.add(new PermanentViewerInfo(game, permanent));
}
avatar = MagicImages.getIconSize4(player.getPlayerDefinition());
}
public ImageIcon getAvatar() {
return avatar;
}
public boolean isAi() {
return isAi;
}
public boolean isMonarch() {
return isMonarch;
}
public boolean isHuman() {
return !isAi;
}
public boolean isPlayerTurn() {
return isPlayerTurn;
}
public int getGamesWon() {
return gamesWon;
}
void setGamesWon(int gamesWon) {
this.gamesWon = gamesWon;
}
public String getName() {
return name;
}
public String getQualifiedDeckName() {
return player.getPlayerDefinition().getDeck().getQualifiedName();
}
}