package games.strategy.triplea.printgenerator;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import games.strategy.engine.data.GameData;
import games.strategy.engine.data.GameStep;
import games.strategy.engine.data.PlayerID;
import games.strategy.triplea.delegate.BidPlaceDelegate;
import games.strategy.triplea.delegate.BidPurchaseDelegate;
import games.strategy.triplea.delegate.EndRoundDelegate;
import games.strategy.triplea.delegate.InitializationDelegate;
public class PlayerOrder {
private final List<PlayerID> m_playerSet = new ArrayList<>();
private <E> Set<E> removeDups(final Collection<E> c) {
return new LinkedHashSet<>(c);
}
protected void saveToFile(final PrintGenerationData printData) throws IOException {
final GameData m_data = printData.getData();
final PrintGenerationData m_printData = printData;
final Iterator<GameStep> m_gameStepIterator = m_data.getSequence().iterator();
while (m_gameStepIterator.hasNext()) {
final GameStep currentStep = m_gameStepIterator.next();
if (currentStep.getDelegate() != null && currentStep.getDelegate().getClass() != null) {
final String delegateClassName = currentStep.getDelegate().getClass().getName();
if (delegateClassName.equals(InitializationDelegate.class.getName())
|| delegateClassName.equals(BidPurchaseDelegate.class.getName())
|| delegateClassName.equals(BidPlaceDelegate.class.getName())
|| delegateClassName.equals(EndRoundDelegate.class.getName())) {
continue;
}
} else if (currentStep.getName() != null
&& (currentStep.getName().endsWith("Bid") || currentStep.getName().endsWith("BidPlace"))) {
continue;
}
final PlayerID currentPlayerID = currentStep.getPlayerID();
if (currentPlayerID != null && !currentPlayerID.isNull()) {
m_playerSet.add(currentPlayerID);
}
}
FileWriter turnWriter = null;
m_printData.getOutDir().mkdir();
final File outFile = new File(m_printData.getOutDir(), "General Information.csv");
turnWriter = new FileWriter(outFile, true);
turnWriter.write("Turn Order\r\n");
final Set<PlayerID> noDuplicates = removeDups(m_playerSet);
final Iterator<PlayerID> playerIterator = noDuplicates.iterator();
int count = 1;
while (playerIterator.hasNext()) {
final PlayerID currentPlayerID = playerIterator.next();
turnWriter.write(count + ". " + currentPlayerID.getName() + "\r\n");
count++;
}
turnWriter.close();
}
}