package games.strategy.engine.data;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import games.strategy.net.GUID;
public class UnitsList implements java.io.Serializable, Iterable<Unit> {
private static final long serialVersionUID = -3134052492257867416L;
// maps GUID -> Unit
// TODO - fix this, all units are never gcd
// note, weak hash maps are not serializable
private Map<GUID, Unit> m_allUnits;
public Unit get(final GUID id) {
return m_allUnits.get(id);
}
public void put(final Unit unit) {
m_allUnits.put(unit.getID(), unit);
}
/*
* Gets all units currently in the game
*/
public Collection<Unit> getUnits() {
return Collections.unmodifiableCollection(m_allUnits.values());
}
public void refresh() {
m_allUnits = new HashMap<>();
}
UnitsList() {
refresh();
}
@Override
public Iterator<Unit> iterator() {
return getUnits().iterator();
}
}