use of games.strategy.engine.data.Change in project triplea by triplea-game.
the class LhtrTest method testLhtrBombingRaid2Bombers.
@Test
public void testLhtrBombingRaid2Bombers() {
final Territory germany = gameData.getMap().getTerritory("Germany");
final Territory uk = gameData.getMap().getTerritory("United Kingdom");
final PlayerID germans = GameDataTestUtil.germans(gameData);
final PlayerID british = GameDataTestUtil.british(gameData);
// add a unit
final Unit bomber = GameDataTestUtil.bomber(gameData).create(british);
final Change change = ChangeFactory.addUnits(uk, Collections.singleton(bomber));
gameData.performChange(change);
final BattleTracker tracker = new BattleTracker();
final StrategicBombingRaidBattle battle = new StrategicBombingRaidBattle(germany, gameData, british, tracker);
battle.addAttackChange(gameData.getMap().getRoute(uk, germany), uk.getUnits().getMatches(Matches.unitIsStrategicBomber()), null);
addTo(germany, uk.getUnits().getMatches(Matches.unitIsStrategicBomber()));
tracker.getBattleRecords().addBattle(british, battle.getBattleId(), germany, battle.getBattleType());
final ITestDelegateBridge bridge = getDelegateBridge(british);
TechTracker.addAdvance(british, bridge, TechAdvance.findAdvance(TechAdvance.TECH_PROPERTY_HEAVY_BOMBER, gameData, british));
// aa guns rolls 3,3 both miss, bomber 1 rolls 2 dice at 3,4 and bomber 2 rolls dice at 1,2
bridge.setRandomSource(new ScriptedRandomSource(new int[] { 3, 3, 2, 3, 0, 1 }));
// if we try to move aa, then the game will ask us if we want to move
// fail if we are called
final ITripleAPlayer player = (ITripleAPlayer) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), new Class<?>[] { ITripleAPlayer.class }, (p, m, a) -> null);
bridge.setRemote(player);
final int pusBeforeRaid = germans.getResources().getQuantity(gameData.getResourceList().getResource(Constants.PUS));
battle.fight(bridge);
final int pusAfterRaid = germans.getResources().getQuantity(gameData.getResourceList().getResource(Constants.PUS));
// targets dice is 4, so damage is 1 + 4 = 5
// bomber 2 hits at 2, so damage is 3, for a total of 8
// Changed to match StrategicBombingRaidBattle changes
assertEquals(pusBeforeRaid - 8, pusAfterRaid);
}
use of games.strategy.engine.data.Change in project triplea by triplea-game.
the class MoveDelegateTest method testCanOverrunNeutralWithoutFunds.
@Test
public void testCanOverrunNeutralWithoutFunds() {
assertEquals(35, british.getResources().getQuantity(pus));
final Change makePoor = ChangeFactory.changeResourcesChange(british, pus, -35);
bridge.addChange(makePoor);
assertEquals(0, british.getResources().getQuantity(pus));
// try to take over South Africa, cant because we cant afford it
final Route route = new Route();
route.setStart(egypt);
route.add(kenya);
route.add(southAfrica);
final IntegerMap<UnitType> map = new IntegerMap<>();
map.put(armour, 2);
final String results = delegate.move(GameDataTestUtil.getUnits(map, route.getStart()), route);
assertError(results);
}
use of games.strategy.engine.data.Change in project triplea by triplea-game.
the class MoveDelegateTest method testBlitzFactory.
@Test
public void testBlitzFactory() {
// create a factory to be taken
final Collection<Unit> factCollection = factory.create(1, japanese);
final Change addFactory = ChangeFactory.addUnits(libya, factCollection);
bridge.addChange(addFactory);
final Route route = new Route();
route.setStart(equatorialAfrica);
route.add(libya);
final IntegerMap<UnitType> map = new IntegerMap<>();
map.put(infantry, 1);
final String results = delegate.move(GameDataTestUtil.getUnits(map, route.getStart()), route);
assertValid(results);
final BattleTracker tracker = DelegateFinder.battleDelegate(gameData).getBattleTracker();
assertTrue(tracker.wasBlitzed(libya));
assertTrue(tracker.wasConquered(libya));
final Unit factory = factCollection.iterator().next();
assertEquals(factory.getOwner(), british);
}
use of games.strategy.engine.data.Change in project triplea by triplea-game.
the class AirThatCantLandUtilTest method testCantLandCarrier.
@Test
public void testCantLandCarrier() {
// 1 carrier in the region, but three fighters, make sure we cant land
final PlayerID player = americansPlayer;
final ITestDelegateBridge bridge = getDelegateBridge(player);
final Territory sz52 = gameData.getMap().getTerritory("52 Sea Zone");
final Change addAir = ChangeFactory.addUnits(sz52, fighterType.create(2, player));
gameData.performChange(addAir);
final AirThatCantLandUtil airThatCantLandUtil = new AirThatCantLandUtil(bridge);
final Collection<Territory> cantLand = airThatCantLandUtil.getTerritoriesWhereAirCantLand(player);
assertEquals(1, cantLand.size());
assertEquals(sz52, cantLand.iterator().next());
airThatCantLandUtil.removeAirThatCantLand(player, false);
// just the original american fighter, plus one that can land on the carrier
assertEquals(2, sz52.getUnits().getMatches(Matches.unitIsAir()).size());
}
use of games.strategy.engine.data.Change in project triplea by triplea-game.
the class AirThatCantLandUtilTest method testCantLandWater.
@Test
public void testCantLandWater() {
final PlayerID player = americansPlayer;
final ITestDelegateBridge bridge = getDelegateBridge(player);
final Territory sz55 = gameData.getMap().getTerritory("55 Sea Zone");
final Change addAir = ChangeFactory.addUnits(sz55, fighterType.create(2, player));
gameData.performChange(addAir);
final AirThatCantLandUtil airThatCantLandUtil = new AirThatCantLandUtil(bridge);
final Collection<Territory> cantLand = airThatCantLandUtil.getTerritoriesWhereAirCantLand(player);
assertEquals(1, cantLand.size());
assertEquals(sz55, cantLand.iterator().next());
airThatCantLandUtil.removeAirThatCantLand(player, false);
assertEquals(0, sz55.getUnits().getMatches(Matches.unitIsAir()).size());
}
Aggregations