public void TestCreateAircraftLaunchOrderEngage() { Player player = new Player(); player.Name = "GoodGuy"; player.IsComputerPlayer = true; Player playerEnemy = new Player(); playerEnemy.Name = "BadGuy"; playerEnemy.IsComputerPlayer = true; GameManager.Instance.GameData.InitAllData(); Game game = GameManager.Instance.CreateGame(player, "test game"); game.Players.Add(player); game.Players.Add(playerEnemy); GameManager.Instance.Game.SetAllPlayersEnemies(); Position pos = new Position(60, 3, 1000, 120); var nextDoorPos = pos.Offset(75, 10000); BaseUnit unitMain = GameManager.Instance.GameData.CreateUnit(player, null, "nimitz", "Nimitz", pos, true); unitMain.SetSensorsActivePassive(TTG.NavalWar.NWComms.GameConstants.SensorType.Radar, true); BaseUnit unitEnemy = GameManager.Instance.GameData.CreateUnit(playerEnemy, null, "boeing767", "", nextDoorPos, true); Assert.IsNotNull(unitEnemy, "Enemy is not null"); unitEnemy.SetSensorsActivePassive(TTG.NavalWar.NWComms.GameConstants.SensorType.Radar, true); game.IsGamePlayStarted = true; //lying! unitMain.SensorSweep(); unitEnemy.SensorSweep(); Assert.IsTrue(player.DetectedUnits.Count > 0, "Player should have detected an enemy."); var targetForAttack = player.DetectedUnits[0]; var unitToLaunch = unitMain.AircraftHangar.Aircraft.First <AircraftUnit>(u => u.SupportsRole(GameConstants.Role.AttackAir) && u.IsReady); Assert.IsNotNull(unitToLaunch, "UnitToLaunch should not be null"); var airList = new List <string>(); airList.Add(unitToLaunch.Id); var unitOrderClient = OrderFactory.CreateAircraftLaunchOrder(unitMain.Id, airList, targetForAttack.GetDetectedUnitInfo()); var baseOrder = game.GetBaseOrderFromUnitOrder(unitOrderClient); Assert.IsTrue(baseOrder.OrderType == GameConstants.OrderType.LaunchOrder, "BaseOrder type should be LaunchOrder"); var engageOrder = baseOrder.Orders[0] as EngagementOrder; Assert.IsNotNull(engageOrder, "EngagementOrder in Launchorder should not be null"); Assert.IsTrue(engageOrder.TargetDetectedUnit.Id == targetForAttack.Id, "EngagementOrder should have target set to right enemy"); player.HandleMessageFromClient(unitOrderClient); unitMain.ExecuteOrders(); Assert.IsNotNull(unitToLaunch.Position, "Unit to launch should have non null position"); Assert.IsNotNull(unitToLaunch.TargetDetectedUnit, "Launched unit should have target detected unit."); }
public void LaunchAttack(BaseUnitInfo unit, DetectedUnitInfo det, List <CarriedUnit> unitsToLaunch, Coordinate coord) { List <string> units = new List <string>(); foreach (CarriedUnit cui in unitsToLaunch) { units.Add(cui.UnitInfo.Id); } UnitMovementOrder moveOrder = new UnitMovementOrder(); if (coord != null) { moveOrder.Waypoints.Add(new WaypointInfo(new PositionInfo(coord.Latitude, coord.Longitude))); } GameManager.Instance.NetworkManager.Send(OrderFactory.CreateAircraftLaunchOrder(unit.Id, units, moveOrder)); GameManager.Instance.NetworkManager.Send(OrderFactory.CreateEngagementOrder(unit.Id, det.Id, string.Empty, GameConstants.EngagementOrderType.CloseAndEngage, GameConstants.EngagementStrength.DefaultAttack, true)); }
public void AircraftReturnToBaseTest() { Player player = new Player(); player.Name = "GoodGuy"; player.IsComputerPlayer = true; Player playerEnemy = new Player(); playerEnemy.Name = "BadGuy"; playerEnemy.IsComputerPlayer = true; GameManager.Instance.GameData.InitAllData(); Game game = GameManager.Instance.CreateGame(player, "test game"); game.Players.Add(player); game.Players.Add(playerEnemy); GameManager.Instance.Game.SetAllPlayersEnemies(); Position pos = new Position(60, 3, 0, 120); var nextDoorPos = pos.Offset(75, 10000); BaseUnit unitMain = GameManager.Instance.GameData.CreateUnit(player, null, "nimitz", "Nimitz", pos, true); unitMain.SetSensorsActivePassive(TTG.NavalWar.NWComms.GameConstants.SensorType.Radar, true); //BaseUnit unitEnemy = GameManager.Instance.GameData.CreateUnit(playerEnemy, null, "boeing767", "", nextDoorPos, true); //Assert.IsNotNull(unitEnemy, "Enemy is not null"); //unitEnemy.SetSensorsActivePassive(TTG.NavalWar.NWComms.GameConstants.SensorType.Radar, true); game.IsGamePlayStarted = true; //lying! unitMain.SensorSweep(); //unitEnemy.SensorSweep(); var unitToLaunch = unitMain.AircraftHangar.Aircraft.First <AircraftUnit>(u => u.SupportsRole(GameConstants.Role.AttackAir) && u.IsReady); Assert.IsNotNull(unitToLaunch, "UnitToLaunch should not be null"); var airList = new List <string>(); airList.Add(unitToLaunch.Id); var destPos = pos.Offset(75, 10000); var moveOrder = new UnitMovementOrder(); moveOrder.Id = unitToLaunch.Id; moveOrder.Position = destPos.GetPositionInfo(); var unitOrderClient = OrderFactory.CreateAircraftLaunchOrder(unitMain.Id, airList, moveOrder); //var unitOrderClient = OrderFactory.CreateAircraftLaunchOrder(unitMain.Id, airList, targetForAttack.GetDetectedUnitInfo()); var baseOrder = game.GetBaseOrderFromUnitOrder(unitOrderClient); Assert.IsTrue(baseOrder.OrderType == GameConstants.OrderType.LaunchOrder, "BaseOrder type should be LaunchOrder"); player.HandleMessageFromClient(unitOrderClient); unitMain.ExecuteOrders(); Assert.IsNotNull(unitToLaunch.Position, "Unit to launch should have non null position"); unitMain.Tick(10); unitToLaunch.Position = destPos.Clone(); //teleport it unitToLaunch.FuelDistanceCoveredSinceRefuelM = unitToLaunch.MaxRangeCruiseM - 10000; // unitToLaunch.FuelDistanceRemainingM; unitToLaunch.MoveToNewCoordinate(100); Assert.IsTrue(unitToLaunch.IsOrderedToReturnToBase, "Launched unit should have been ordered to return to base."); var distM = MapHelper.CalculateDistance3DM(unitMain.Position, unitToLaunch.MovementOrder.GetActiveWaypoint().Position); Assert.IsTrue(distM < 1, "Launched unit current waypoint should be carrier position"); var iterations = 0; do { var distanceToCarrierM = MapHelper.CalculateDistance3DM(unitMain.Position, unitToLaunch.Position); unitMain.Tick(1); unitToLaunch.Tick(1); iterations++; } while (unitToLaunch.CarriedByUnit == null && iterations < 100000); Assert.IsTrue(iterations < 100000, "No more than 100000 iterations should have passed."); }
public void LaunchMultipleAircraftToEngageTarget() { Player player = new Player(); player.Name = "GoodGuy"; player.IsComputerPlayer = true; Player playerEnemy = new Player(); playerEnemy.Name = "BadGuy"; playerEnemy.IsComputerPlayer = true; GameManager.Instance.GameData.InitAllData(); Game game = GameManager.Instance.CreateGame(player, "test game"); game.Players.Add(player); game.Players.Add(playerEnemy); GameManager.Instance.Game.SetAllPlayersEnemies(); Position pos = new Position(60, 3, 1000, 120); var nextDoorPos = pos.Offset(75, 10000); nextDoorPos.HeightOverSeaLevelM = 0; var nextDoorPos2 = pos.Offset(75, 10050); nextDoorPos2.HeightOverSeaLevelM = 0; Group enemyGroup = new Group(); BaseUnit unitMain = GameManager.Instance.GameData.CreateUnit(player, null, "nimitz", "Nimitz", pos, true); unitMain.SetSensorsActivePassive(TTG.NavalWar.NWComms.GameConstants.SensorType.Radar, true); BaseUnit unitEnemy = GameManager.Instance.GameData.CreateUnit(playerEnemy, enemyGroup, "pamela", "Pamela 1", nextDoorPos, true); BaseUnit unitEnemy2 = GameManager.Instance.GameData.CreateUnit(playerEnemy, enemyGroup, "pamela", "Pamela 2", nextDoorPos2, true); Assert.IsNotNull(unitEnemy, "Enemy is not null"); Assert.IsTrue(enemyGroup.Units.Count == 2, "Enemy group should have two units."); unitEnemy.SetSensorsActivePassive(TTG.NavalWar.NWComms.GameConstants.SensorType.Radar, true); game.IsGamePlayStarted = true; //lying! unitMain.SensorSweep(); unitEnemy.SensorSweep(); Assert.IsTrue(player.DetectedUnits.Count > 0, "Player should have detected an enemy."); var targetForAttack = player.DetectedUnits[0]; var unitsToLaunch = unitMain.AircraftHangar.Aircraft.Where <AircraftUnit>(u => u.SupportsRole(GameConstants.Role.AttackSurfaceStandoff) && u.IsReady); int launchCount = 2; int idx = 0; Assert.IsNotNull(unitsToLaunch, "UnitToLaunch should not be null"); Assert.IsTrue(unitsToLaunch.Count <AircraftUnit>() > 2, "More that two units should be found to launch"); var airList = new List <string>(); foreach (var aircraft in unitsToLaunch) { airList.Add(aircraft.Id); idx++; if (idx >= launchCount) { break; } } var airCraftList = new List <BaseUnit>(); foreach (var air in airList) { var plane = player.GetUnitById(air); airCraftList.Add(plane); } Assert.IsTrue(airList.Count == launchCount, "The right unit count should be picked for launch"); var unitOrderClient = OrderFactory.CreateAircraftLaunchOrder(unitMain.Id, airList, targetForAttack.GetDetectedUnitInfo()); var baseOrder = game.GetBaseOrderFromUnitOrder(unitOrderClient); Assert.IsTrue(baseOrder.OrderType == GameConstants.OrderType.LaunchOrder, "BaseOrder type should be LaunchOrder"); var engageOrder = baseOrder.Orders[0] as EngagementOrder; Assert.IsNotNull(engageOrder, "EngagementOrder in LaunchOrder should not be null"); Assert.IsTrue(engageOrder.TargetDetectedUnit.Id == targetForAttack.Id, "EngagementOrder should have target set to right enemy"); player.HandleMessageFromClient(unitOrderClient); unitMain.ExecuteOrders(); var firstPlane = airCraftList[0]; var secondPlane = airCraftList[1]; Assert.IsNotNull(firstPlane.Position, "First plane should have non null position"); Assert.IsNotNull(firstPlane.TargetDetectedUnit, "First Plane should have target detected unit."); Assert.IsNotNull(secondPlane.Position, "Second Plane should have non null position"); Assert.IsNotNull(secondPlane.TargetDetectedUnit, "Second Plane should have target detected unit."); }