use of games.strategy.engine.data.PlayerID in project triplea by triplea-game.
the class WW2V3Year41Test method testInfantryLoadOnlyTransports.
@Test
public void testInfantryLoadOnlyTransports() {
final Territory gibraltar = territory("Gibraltar", gameData);
// add a tank to gibralter
final PlayerID british = british(gameData);
addTo(gibraltar, infantry(gameData).create(1, british));
final MoveDelegate moveDelegate = moveDelegate(gameData);
final ITestDelegateBridge bridge = getDelegateBridge(british);
bridge.setStepName("britishCombatMove");
moveDelegate.setDelegateBridgeAndPlayer(bridge);
moveDelegate.start();
bridge.setRemote(dummyPlayer);
final Territory sz9 = territory("9 Sea Zone", gameData);
final Territory sz13 = territory("13 Sea Zone", gameData);
final Route sz9ToSz13 = new Route(sz9, territory("12 Sea Zone", gameData), sz13);
// move the transport to attack, this is suicide but valid
move(sz9.getUnits().getMatches(Matches.unitIsTransport()), sz9ToSz13);
// load the transport
load(gibraltar.getUnits().getUnits(), new Route(gibraltar, sz13));
moveDelegate.end();
bridge.setStepName("britishBattle");
final BattleDelegate battleDelegate = battleDelegate(gameData);
battleDelegate.setDelegateBridgeAndPlayer(bridge);
battleDelegate.start();
assertTrue(battleDelegate.getBattles().isEmpty());
}
use of games.strategy.engine.data.PlayerID in project triplea by triplea-game.
the class WW2V3Year41Test method testBombardStrengthVariable.
@Test
public void testBombardStrengthVariable() {
final MoveDelegate move = moveDelegate(gameData);
final ITestDelegateBridge bridge = getDelegateBridge(italians(gameData));
when(dummyPlayer.selectShoreBombard(any())).thenReturn(true);
bridge.setRemote(dummyPlayer);
bridge.setStepName("CombatMove");
move.setDelegateBridgeAndPlayer(bridge);
move.start();
final Territory sz14 = territory("14 Sea Zone", gameData);
final Territory sz15 = territory("15 Sea Zone", gameData);
final Territory eg = territory("Egypt", gameData);
final Territory balkans = territory("Balkans", gameData);
// Clear all units
removeFrom(eg, eg.getUnits().getUnits());
removeFrom(sz14, sz14.getUnits().getUnits());
// Add 2 inf to the attacked terr
final PlayerID british = GameDataTestUtil.british(gameData);
addTo(eg, infantry(gameData).create(2, british));
// create/load the destroyers and transports
final PlayerID italians = GameDataTestUtil.italians(gameData);
addTo(sz14, transport(gameData).create(1, italians));
addTo(sz14, destroyer(gameData).create(2, italians));
// load the transports
load(balkans.getUnits().getMatches(Matches.unitIsLandTransportable()), new Route(balkans, sz14));
// move the fleet
move(sz14.getUnits().getUnits(), new Route(sz14, sz15));
// unload the transports
move(sz15.getUnits().getMatches(Matches.unitIsLand()), new Route(sz15, eg));
move.end();
// Set the tech for DDs bombard
// ww2v3 doesn't have this tech, so this does nothing...
// TechAttachment.get(italians).setDestroyerBombard("true");
UnitAttachment.get(destroyer(gameData)).setCanBombard("true");
// Set the bombard strength for the DDs
final Collection<Unit> dds = CollectionUtils.getMatches(sz15.getUnits().getUnits(), Matches.unitIsDestroyer());
final Iterator<Unit> ddIter = dds.iterator();
while (ddIter.hasNext()) {
final Unit unit = ddIter.next();
final UnitAttachment ua = UnitAttachment.get(unit.getType());
ua.setBombard(3);
}
// start the battle phase, this will ask the user to bombard
battleDelegate(gameData).setDelegateBridgeAndPlayer(bridge);
BattleDelegate.doInitialize(battleDelegate(gameData).getBattleTracker(), bridge);
battleDelegate(gameData).addBombardmentSources();
final MustFightBattle mfb = (MustFightBattle) AbstractMoveDelegate.getBattleTracker(gameData).getPendingBattle(eg, false, null);
assertNotNull(mfb);
// Show that bombard casualties can return fire
// destroyer bombard hit/miss on rolls of 4 & 3
// landing inf miss
// defending inf hit
bridge.setRandomSource(new ScriptedRandomSource(3, 2, 6, 6, 1, 1));
battleDelegate(gameData).setDelegateBridgeAndPlayer(bridge);
BattleDelegate.doInitialize(battleDelegate(gameData).getBattleTracker(), bridge);
battleDelegate(gameData).addBombardmentSources();
fight(battleDelegate(gameData), eg);
// 1 defending inf remaining
assertEquals(1, eg.getUnits().size());
}
use of games.strategy.engine.data.PlayerID in project triplea by triplea-game.
the class WW2V3Year41Test method testMechInfSimple.
@Test
public void testMechInfSimple() {
final PlayerID germans = germans(gameData);
final Territory france = territory("France", gameData);
final Territory germany = territory("Germany", gameData);
final Territory poland = territory("Poland", gameData);
TechAttachment.get(germans).setMechanizedInfantry("true");
final ITestDelegateBridge bridge = getDelegateBridge(germans);
bridge.setStepName("CombatMove");
moveDelegate(gameData).setDelegateBridgeAndPlayer(bridge);
moveDelegate(gameData).start();
final Route r = new Route(france, germany, poland);
final List<Unit> toMove = new ArrayList<>();
// 1 armour and 1 infantry
toMove.addAll(france.getUnits().getMatches(Matches.unitCanBlitz()));
toMove.add(france.getUnits().getMatches(Matches.unitIsLandTransportable()).get(0));
move(toMove, r);
}
use of games.strategy.engine.data.PlayerID in project triplea by triplea-game.
the class WW2V3Year41Test method testParatroopersFlyOverBlitzedTerritory.
@Test
public void testParatroopersFlyOverBlitzedTerritory() {
// We should be able to blitz a territory, then fly over it with paratroops to battle.
final PlayerID germans = germans(gameData);
final Territory germany = territory("Germany", gameData);
final Territory poland = territory("Poland", gameData);
final Territory eastPoland = territory("East Poland", gameData);
final Territory beloRussia = territory("Belorussia", gameData);
// Clear East Poland
removeFrom(eastPoland, eastPoland.getUnits().getUnits());
// Set up test
final ITestDelegateBridge bridge = getDelegateBridge(germans);
bridge.setStepName("CombatMove");
moveDelegate(gameData).setDelegateBridgeAndPlayer(bridge);
moveDelegate(gameData).start();
TechAttachment.get(germans).setParatroopers("true");
List<Unit> paratrooper = germany.getUnits().getMatches(Matches.unitIsAirTransportable());
paratrooper = paratrooper.subList(0, 1);
final List<Unit> bomberAndParatroop = new ArrayList<>(paratrooper);
bomberAndParatroop.addAll(germany.getUnits().getMatches(Matches.unitIsAirTransport()));
final List<Unit> tanks = poland.getUnits().getMatches(Matches.unitCanBlitz());
move(tanks, new Route(poland, eastPoland, beloRussia));
final List<Unit> airTransports = CollectionUtils.getMatches(bomberAndParatroop, Matches.unitIsAirTransport());
for (final Unit airTransport : airTransports) {
for (final Unit unit : paratrooper) {
final Change change = TransportTracker.loadTransportChange((TripleAUnit) airTransport, unit);
bridge.addChange(change);
}
}
// Verify paratroops can overfly blitzed territory
final String error = moveDelegate(gameData).move(bomberAndParatroop, new Route(germany, poland, eastPoland, beloRussia));
assertValid(error);
}
use of games.strategy.engine.data.PlayerID in project triplea by triplea-game.
the class WW2V3Year41Test method testOccupiedTerrOfAttachmentWithCapital.
@Test
public void testOccupiedTerrOfAttachmentWithCapital() throws GameParseException {
// Set up test
final PlayerID british = GameDataTestUtil.british(gameData);
final ITestDelegateBridge delegateBridge = getDelegateBridge(british(gameData));
// Set up the move delegate
final MoveDelegate moveDelegate = moveDelegate(gameData);
delegateBridge.setStepName("CombatMove");
moveDelegate(gameData).setDelegateBridgeAndPlayer(delegateBridge);
moveDelegate(gameData).start();
// Set up the territories
final Territory hupeh = territory("Hupeh", gameData);
final Territory kiangsu = territory("Kiangsu", gameData);
final Territory mongolia = territory("Mongolia", gameData);
// Remove original capital
final TerritoryAttachment taMongolia = TerritoryAttachment.get(mongolia);
final TerritoryAttachment taKiangsu = TerritoryAttachment.get(kiangsu);
taMongolia.setCapital(null);
// Set as NEW capital
taKiangsu.setCapital(Constants.PLAYER_NAME_CHINESE);
// Remove all units
removeFrom(kiangsu, kiangsu.getUnits().getUnits());
removeFrom(hupeh, hupeh.getUnits().getUnits());
// Set up the unit types
addTo(hupeh, infantry(gameData).create(1, british));
// Get units
final Collection<Unit> moveUnits = hupeh.getUnits().getUnits();
// Get Owner prior to battle
final String preOwner = kiangsu.getOwner().getName();
assertEquals(Constants.PLAYER_NAME_JAPANESE, preOwner);
// add a VALID attack
final String validResults = moveDelegate.move(moveUnits, new Route(hupeh, kiangsu));
assertValid(validResults);
// Ensure owner after attack doesn't match attacker
final String postOwner = kiangsu.getOwner().getName();
assertNotSame(Constants.PLAYER_NAME_BRITISH, postOwner);
// Check that original owner is now owner
assertEquals(Constants.PLAYER_NAME_CHINESE, postOwner);
}
Aggregations