package magic.game.state;
import java.util.ArrayList;
import java.util.List;
public class GameState {
private int difficulty;
private final List<GamePlayerState> players = new ArrayList<>();
private int startPlayerNumber = 0;
public void setDifficulty(int i) {
this.difficulty = i;
}
public int getDifficulty() {
return difficulty;
}
public GamePlayerState getPlayer(int i) {
try {
return players.get(i);
} catch (java.lang.IndexOutOfBoundsException ex) {
players.add(new GamePlayerState());
return players.get(i);
}
}
public int getStartPlayerIndex() {
return startPlayerNumber;
}
public void setStartPlayerIndex(int i) {
this.startPlayerNumber = i;
}
public List<GamePlayerState> getPlayers() {
return players;
}
@Override
public String toString() {
final String LF = "\n";
final StringBuilder sb = new StringBuilder();
sb.append("# GAME STATE").append(LF);
sb.append("difficulty=").append(getDifficulty()).append(LF);
sb.append("startPlayer=").append(getStartPlayerIndex()).append(LF);
for (int i = 0; i < players.size(); i++) {
sb.append("PLAYER ").append(i).append(" STATE").append(LF);
final GamePlayerState player = getPlayers().get(i);
sb.append("name=").append(player.getName()).append(LF);
sb.append("life=").append(player.getLife()).append(LF);
sb.append("face=").append(player.getFace()).append(LF);
sb.append("ai=").append(player.getAiType()).append(LF);
sb.append("deck.color=").append(player.getDeckProfileColors()).append(LF);
// HAND
sb.append("PLAYER ").append(i).append(" HAND").append(LF);
for (GameCardState card : players.get(i).getHand()) {
sb.append(card.getCardName()).append(" x").append(card.getQuantity()).append(LF);
}
// PERMANENTS
sb.append("PLAYER ").append(i).append(" PERMANENTS").append(LF);
for (GameCardState card : players.get(i).getPermanents()) {
sb.append(card.getCardName()).append(" x").append(card.getQuantity()).append(LF);
}
// LIBRARY
sb.append("PLAYER ").append(i).append(" LIBRARY").append(LF);
for (GameCardState card : players.get(i).getLibrary()) {
sb.append(card.getCardName()).append(" x").append(card.getQuantity()).append(LF);
}
}
return sb.toString();
}
}