Example #1
0
        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.");
        }
Example #2
0
    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));
    }
Example #3
0
        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.");
        }
Example #4
0
        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.");
        }