Skip to content

Commit

Permalink
sort_Battles #4
Browse files Browse the repository at this point in the history
Move BattleListing map building from BattleTracker into BattleListing

BattleTracker
- move logic of method getBattleListingFromPendingBattles() to constructor of BattleListing

BattleListing.java
- rename attribute battles to battlesMap
- change constructor to include logic of method BattleTracker.getBattleListingFromPendingBattles()
- extract new method getBattlesWith(predicate)

Subsequent changes for Getter on BattleListing.battlesMap
- AbstractAi.java
- AirThatCantLandUtilTest.java
- ProSimulateTurnUtils.java
- WW2V3Year41Test.java
  • Loading branch information
frigoref committed Aug 4, 2024
1 parent b7c1c9c commit 39a4fa9
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -605,7 +605,8 @@ protected void battle(final IBattleDelegate battleDelegate) {
if (listing.isEmpty()) {
return;
}
for (final Entry<BattleType, Collection<Territory>> entry : listing.getBattles().entrySet()) {
for (final Entry<BattleType, Collection<Territory>> entry :
listing.getBattlesMap().entrySet()) {
for (final Territory current : entry.getValue()) {
final String error =
battleDelegate.fightBattle(current, entry.getKey().isBombingRun(), entry.getKey());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public static void simulateBattles(

final BattleDelegate battleDelegate = data.getBattleDelegate();
final Map<BattleType, Collection<Territory>> battleTerritories =
battleDelegate.getBattleListing().getBattles();
battleDelegate.getBattleListing().getBattlesMap();
for (final Entry<BattleType, Collection<Territory>> entry : battleTerritories.entrySet()) {
for (final Territory t : entry.getValue()) {
final IBattle battle =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
Expand Down Expand Up @@ -1095,19 +1094,7 @@ private Collection<Territory> getPendingBattleSites(final boolean bombing) {
}

public BattleListing getBattleListingFromPendingBattles() {
final Map<BattleType, Collection<Territory>> battles = new EnumMap<>(BattleType.class);
pendingBattles.stream()
.filter(b -> !b.isEmpty())
.forEach(
b -> {
Collection<Territory> territories = battles.get(b.getBattleType());
if (territories == null) {
territories = new HashSet<>();
}
territories.add(b.getTerritory());
battles.put(b.getBattleType(), territories);
});
return new BattleListing(battles);
return new BattleListing(pendingBattles);
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
package games.strategy.triplea.delegate.data;

import games.strategy.engine.data.Territory;
import games.strategy.triplea.delegate.battle.IBattle;
import games.strategy.triplea.delegate.battle.IBattle.BattleType;
import java.io.Serializable;
import java.util.Collection;
import java.util.EnumMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.Predicate;
import lombok.Getter;

/**
Expand All @@ -17,43 +20,53 @@
@Getter
public class BattleListing implements Serializable {
private static final long serialVersionUID = 2700129486225793827L;
private final Map<BattleType, Collection<Territory>> battles;
private final Map<BattleType, Collection<Territory>> battlesMap;

/**
* Creates new BattleListing.
*
* @param battles battles to list
*/
public BattleListing(final Map<BattleType, Collection<Territory>> battles) {
this.battles = battles;
public BattleListing(final Set<IBattle> battles) {
this.battlesMap = new EnumMap<>(BattleType.class);
battles.stream()
.filter(b -> !b.isEmpty())
.forEach(
b -> {
Collection<Territory> territories = battlesMap.get(b.getBattleType());
if (territories == null) {
territories = new HashSet<>();
}
territories.add(b.getTerritory());
battlesMap.put(b.getBattleType(), territories);
});
}

public Set<Territory> getNormalBattlesIncludingAirBattles() {
final Set<Territory> territories = new HashSet<>();
for (final Entry<BattleType, Collection<Territory>> entry : battles.entrySet()) {
if (!entry.getKey().isBombingRun()) {
territories.addAll(entry.getValue());
}
}
return territories;
return getBattlesWith(b -> !b.isBombingRun());
}

public Set<Territory> getStrategicBombingRaidsIncludingAirBattles() {
return getBattlesWith(BattleType::isBombingRun);
}

private Set<Territory> getBattlesWith(Predicate<BattleType> predicate) {
final Set<Territory> territories = new HashSet<>();
for (final Entry<BattleType, Collection<Territory>> entry : battles.entrySet()) {
if (entry.getKey().isBombingRun()) {
for (final Entry<BattleType, Collection<Territory>> entry : battlesMap.entrySet()) {
if (predicate.test(entry.getKey())) {
territories.addAll(entry.getValue());
}
}
return territories;
}

public boolean isEmpty() {
return battles.isEmpty();
return battlesMap.isEmpty();
}

public void forEachBattle(BiConsumer<? super BattleType, ? super Territory> action) {
for (final Entry<BattleType, Collection<Territory>> battleTypeCollection : battles.entrySet()) {
for (final Entry<BattleType, Collection<Territory>> battleTypeCollection :
battlesMap.entrySet()) {
final BattleType battleType = battleTypeCollection.getKey();
for (final Territory territory : battleTypeCollection.getValue()) {
action.accept(battleType, territory);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class AirThatCantLandUtilTest extends AbstractClientSettingTestCase {

private static void fight(final IBattleDelegate battle, final Territory territory) {
for (final Entry<BattleType, Collection<Territory>> entry :
battle.getBattleListing().getBattles().entrySet()) {
battle.getBattleListing().getBattlesMap().entrySet()) {
if (!entry.getKey().isBombingRun() && entry.getValue().contains(territory)) {
battle.fightBattle(territory, false, entry.getKey());
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ private static void thenRemotePlayerShouldNotBeAskedToRetreat(

private static void fight(final BattleDelegate battle, final Territory territory) {
for (final Entry<BattleType, Collection<Territory>> entry :
battle.getBattleListing().getBattles().entrySet()) {
battle.getBattleListing().getBattlesMap().entrySet()) {
if (!entry.getKey().isBombingRun() && entry.getValue().contains(territory)) {
battle.fightBattle(territory, false, entry.getKey());
return;
Expand Down

0 comments on commit 39a4fa9

Please sign in to comment.