package net.sf.colossus.client; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.colossus.variant.CreatureType; /** * A specialized list of creature info, for split prediction. * * @author David Ripton */ class CreatureInfoList extends ArrayList<CreatureInfo> { private static final Logger LOGGER = Logger .getLogger(CreatureInfoList.class.getName()); void removeLastUncertainCreature() { ListIterator<CreatureInfo> lit = this.listIterator(this.size()); while (lit.hasPrevious()) { CreatureInfo ci = lit.previous(); if (!ci.isCertain()) { lit.remove(); return; } } LOGGER.log(Level.SEVERE, "No uncertain creatures"); } List<String> getCreatureNames() { List<String> list = new ArrayList<String>(); for (CreatureInfo ci : this) { list.add(ci.getName()); } return list; } List<CreatureType> getCreatureTypes() { List<CreatureType> list = new ArrayList<CreatureType>(); for (CreatureInfo ci : this) { list.add(ci.getType()); } return list; } /** Deep copy */ @Override public CreatureInfoList clone() { CreatureInfoList dupe = new CreatureInfoList(); for (CreatureInfo ci : this) { dupe.add(ci.clone()); } return dupe; } }