package games.strategy.triplea.delegate.dataObjects;
import java.io.Serializable;
import java.util.Collection;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import games.strategy.engine.data.Territory;
import games.strategy.triplea.delegate.IBattle.BattleType;
/**
* Sent by the battle delegate to the game player to indicate
* which battles are left to be fought.
*/
public class BattleListing implements Serializable {
private static final long serialVersionUID = 2700129486225793827L;
private final Map<BattleType, Collection<Territory>> m_battles;
/**
* Creates new BattleListing.
*
* @param battles
* battles to list
*/
public BattleListing(final Map<BattleType, Collection<Territory>> battles) {
m_battles = battles;
}
public Map<BattleType, Collection<Territory>> getBattles() {
return m_battles;
}
public Set<Territory> getAllBattleTerritories() {
final Set<Territory> territories = new HashSet<>();
for (final Entry<BattleType, Collection<Territory>> entry : m_battles.entrySet()) {
territories.addAll(entry.getValue());
}
return territories;
}
public Set<Territory> getNormalBattlesIncludingAirBattles() {
final Set<Territory> territories = new HashSet<>();
for (final Entry<BattleType, Collection<Territory>> entry : m_battles.entrySet()) {
if (!entry.getKey().isBombingRun()) {
territories.addAll(entry.getValue());
}
}
return territories;
}
public Set<Territory> getStrategicBombingRaidsIncludingAirBattles() {
final Set<Territory> territories = new HashSet<>();
for (final Entry<BattleType, Collection<Territory>> entry : m_battles.entrySet()) {
if (entry.getKey().isBombingRun()) {
territories.addAll(entry.getValue());
}
}
return territories;
}
public Set<Territory> getAirBattles() {
final Set<Territory> territories = new HashSet<>();
for (final Entry<BattleType, Collection<Territory>> entry : m_battles.entrySet()) {
if (entry.getKey().isAirPreBattleOrPreRaid()) {
territories.addAll(entry.getValue());
}
}
return territories;
}
public boolean isEmpty() {
return m_battles.isEmpty();
}
}