public static void EzraDoubleActionsCampaignMission2() { var players = new List <Player> { CreateBluePlayerDoubleActionsCampaignMission2(), CreateGreenPlayerDoubleActionsCampaignMission2(), CreateYellowPlayerDoubleActionsCampaignMission2(), CreateRedPlayerDoubleActionsCampaignMission2() }; var externalTracksByZone = new Dictionary <ZoneLocation, TrackConfiguration> { { ZoneLocation.Blue, TrackConfiguration.Track7 }, { ZoneLocation.White, TrackConfiguration.Track2 }, { ZoneLocation.Red, TrackConfiguration.Track5 } }; const TrackConfiguration internalTrack = TrackConfiguration.Track4; var interstellarOctopus = new InterstellarOctopus(); interstellarOctopus.SetInitialPlacement(3, ZoneLocation.Blue); var meteoroid = new Meteoroid(); meteoroid.SetInitialPlacement(8, ZoneLocation.Blue); var amoeba = new Amoeba(); amoeba.SetInitialPlacement(2, ZoneLocation.White); var stealthFighter = new StealthFighter(); stealthFighter.SetInitialPlacement(4, ZoneLocation.White); var spinningSaucer = new SpinningSaucer(); spinningSaucer.SetInitialPlacement(7, ZoneLocation.White); var armoredGrappler = new ArmoredGrappler(); armoredGrappler.SetInitialPlacement(1, ZoneLocation.Red); var externalThreats = new ExternalThreat[] { interstellarOctopus, meteoroid, amoeba, stealthFighter, spinningSaucer, armoredGrappler }; var commandosB = new CommandosB(); commandosB.SetInitialPlacement(5); var hackedShieldsB = new HackedShieldsB(); hackedShieldsB.SetInitialPlacement(8); var internalThreats = new InternalThreat[] { commandosB, hackedShieldsB }; var bonusThreats = new Threat[0]; var game = new Game(players, internalThreats, externalThreats, bonusThreats, externalTracksByZone, internalTrack, null); game.StartGame(); for (var currentTurn = 0; currentTurn < game.NumberOfTurns + 1; currentTurn++) { game.PerformTurn(); } Assert.AreEqual(GameStatus.Won, game.GameStatus); Assert.AreEqual(2, game.SittingDuck.BlueZone.TotalDamage); Assert.AreEqual(0, game.SittingDuck.RedZone.TotalDamage); Assert.AreEqual(5, game.SittingDuck.WhiteZone.TotalDamage); Assert.AreEqual(6, game.ThreatController.DefeatedThreats.Count()); Assert.AreEqual(2, game.ThreatController.SurvivedThreats.Count()); Assert.AreEqual(0, players.Count(player => player.IsKnockedOut)); Assert.AreEqual(2, game.SittingDuck.BlueZone.CurrentDamageTokens.Count); Assert.AreEqual(0, game.SittingDuck.RedZone.CurrentDamageTokens.Count); Assert.AreEqual(5, game.SittingDuck.WhiteZone.CurrentDamageTokens.Count); }
public static void EzraDoubleActionsCampaignMission1() { var players = new List <Player> { CreateBluePlayerDoubleActionsCampaignMission1(), CreateGreenPlayerDoubleActionsCampaignMission1(), CreateYellowPlayerDoubleActionsCampaignMission1(), CreateRedPlayerDoubleActionsCampaignMission1() }; var externalTracksByZone = new Dictionary <ZoneLocation, TrackConfiguration> { { ZoneLocation.Blue, TrackConfiguration.Track6 }, { ZoneLocation.White, TrackConfiguration.Track2 }, { ZoneLocation.Red, TrackConfiguration.Track5 }, }; const TrackConfiguration internalTrack = TrackConfiguration.Track7; var armoredGrappler = new ArmoredGrappler(); armoredGrappler.SetInitialPlacement(1, ZoneLocation.Blue); var meteoroid = new Meteoroid(); meteoroid.SetInitialPlacement(4, ZoneLocation.Blue); var dimensionSpider = new DimensionSpider(); dimensionSpider.SetInitialPlacement(2, ZoneLocation.White); var gunship = new Gunship(); gunship.SetInitialPlacement(6, ZoneLocation.White); var asteroid = new Asteroid(); asteroid.SetInitialPlacement(5, ZoneLocation.Red); var destroyer = new Destroyer(); destroyer.SetInitialPlacement(8, ZoneLocation.Red); var externalThreats = new ExternalThreat[] { armoredGrappler, meteoroid, dimensionSpider, gunship, asteroid, destroyer }; var shambler = new Shambler(); shambler.SetInitialPlacement(4); var internalThreats = new InternalThreat[] { shambler }; var bonusThreats = new Threat[0]; var game = new Game(players, internalThreats, externalThreats, bonusThreats, externalTracksByZone, internalTrack, null); game.StartGame(); try { for (var currentTurn = 0; currentTurn < game.NumberOfTurns + 1; currentTurn++) { game.PerformTurn(); } } catch (LoseException loseException) { Assert.AreEqual(destroyer, loseException.Threat); Assert.AreEqual(GameStatus.Lost, game.GameStatus); Assert.AreEqual(0, game.SittingDuck.BlueZone.TotalDamage); Assert.AreEqual(9, game.SittingDuck.RedZone.TotalDamage); Assert.AreEqual(0, game.SittingDuck.WhiteZone.TotalDamage); Assert.AreEqual(6, game.ThreatController.DefeatedThreats.Count()); Assert.AreEqual(0, game.ThreatController.SurvivedThreats.Count()); Assert.AreEqual(0, players.Count(player => player.IsKnockedOut)); Assert.AreEqual(0, game.SittingDuck.BlueZone.CurrentDamageTokens.Count); Assert.AreEqual(6, game.SittingDuck.RedZone.CurrentDamageTokens.Count); Assert.AreEqual(0, game.SittingDuck.WhiteZone.CurrentDamageTokens.Count); } }