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); } }
public static void EzraCampaign1Mission2() { var players = new List <Player> { new Player(PlayerActionFactory.CreateSingleActionList(new PlayerActionType?[] { null, PlayerActionType.MoveBlue, PlayerActionType.BasicSpecialization, null, PlayerActionType.AdvancedSpecialization, PlayerActionType.ChangeDeck, PlayerActionType.Alpha, PlayerActionType.Alpha, null, null, null, null }), 0, PlayerColor.Blue, PlayerSpecialization.EnergyTechnician), new Player(PlayerActionFactory.CreateSingleActionList(new PlayerActionType?[] { PlayerActionType.MoveRed, PlayerActionType.BasicSpecialization, null, null, PlayerActionType.Alpha, PlayerActionType.Alpha, PlayerActionType.MoveBlue, PlayerActionType.BasicSpecialization, null, null, null, null }), 1, PlayerColor.Green, PlayerSpecialization.PulseGunner), new Player(PlayerActionFactory.CreateSingleActionList(new PlayerActionType?[] { PlayerActionType.MoveRed, PlayerActionType.ChangeDeck, PlayerActionType.Bravo, PlayerActionType.Alpha, PlayerActionType.Alpha, PlayerActionType.Alpha, null, null, null, null, null, null }), 2, PlayerColor.Purple), new Player(PlayerActionFactory.CreateSingleActionList(new PlayerActionType?[] { PlayerActionType.Charlie, null, null, PlayerActionType.BasicSpecialization, PlayerActionType.MoveBlue, PlayerActionType.Alpha, PlayerActionType.Alpha, PlayerActionType.MoveRed, PlayerActionType.BasicSpecialization, null, null, null }), 3, PlayerColor.Red, PlayerSpecialization.DataAnalyst) }; var externalTracksByZone = new Dictionary <ZoneLocation, TrackConfiguration> { { ZoneLocation.Blue, TrackConfiguration.Track1 }, { ZoneLocation.Red, TrackConfiguration.Track2 }, { ZoneLocation.White, TrackConfiguration.Track7 }, }; const TrackConfiguration internalTrack = TrackConfiguration.Track4; var dimensionSpider = new DimensionSpider(); dimensionSpider.SetInitialPlacement(6, ZoneLocation.Blue); var cryoshieldFrigate = new CryoshieldFrigate(); cryoshieldFrigate.SetInitialPlacement(4, ZoneLocation.Red); var energyCloud = new EnergyCloud(); energyCloud.SetInitialPlacement(1, ZoneLocation.Red); var externalThreats = new ExternalThreat[] { dimensionSpider, cryoshieldFrigate, energyCloud }; var battleBotUprising = new BattleBotUprising(); battleBotUprising.SetInitialPlacement(5); var internalThreats = new InternalThreat[] { battleBotUprising }; 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(0, game.SittingDuck.BlueZone.TotalDamage); Assert.AreEqual(0, game.SittingDuck.RedZone.TotalDamage); Assert.AreEqual(0, game.SittingDuck.WhiteZone.TotalDamage); Assert.AreEqual(3, game.ThreatController.DefeatedThreats.Count()); Assert.AreEqual(1, game.ThreatController.SurvivedThreats.Count()); Assert.AreEqual(20 + 4 + 2, game.TotalPoints); Assert.AreEqual(2, players.Count(player => player.IsKnockedOut)); Assert.AreEqual(0, game.SittingDuck.Zones.ElementAt(0).CurrentDamageTokens.Count); Assert.AreEqual(0, game.SittingDuck.Zones.ElementAt(1).CurrentDamageTokens.Count); Assert.AreEqual(0, game.SittingDuck.Zones.ElementAt(2).CurrentDamageTokens.Count); }