Example #1
0
 public TerrainLineSummary GetTerrainHeightSummaryToTarget(BaseUnit targetUnit)
 {
     if (OwnerUnit.Position.HeightOverSeaLevelM > GameConstants.MAX_HEIGHT_TERRAIN_M &&
         targetUnit.Position.HeightOverSeaLevelM > GameConstants.MAX_HEIGHT_TERRAIN_M)
     {
         return(new TerrainLineSummary(100, 100, 0));  //if both units are over terrain, no need to check
     }
     else
     {
         return(TerrainReader.GetTerrainHeightSummary(OwnerUnit.Position.Coordinate,
                                                      targetUnit.Position.Coordinate, GameConstants.DEFAULT_NO_OF_POINTS_TERRAIN_LINE));
     }
 }
Example #2
0
        public void UpdateElevationWithTerrain()
        {
            TerrainReader.LoadMemoryMap();
            var landPos     = new Position(60, 9, 100, 90);
            var seaPos      = new Position(60, 3, 100, 90);
            var heightLandM = TerrainReader.GetHeightM(landPos.Coordinate);
            var heightSeaM  = TerrainReader.GetHeightM(seaPos.Coordinate);

            Assert.IsTrue(heightLandM > 0, "Land coord height should be over 0");
            Assert.IsTrue(heightSeaM < 0, "Sea coord height should be under 0");

            Player player1 = new Player();

            player1.Name = "Player1";
            Player player2 = new Player();

            player2.Name = "Player2";

            Group group1 = new Group();
            Group group2 = new Group();

            GameManager.Instance.GameData.InitAllData();
            Game game = GameManager.Instance.CreateGame(player1, "test game");

            GameManager.Instance.Game.UpperLeftCorner  = new Coordinate(70, -10);
            GameManager.Instance.Game.LowerRightCorner = new Coordinate(40, 10);
            game.AddPlayer(player2);

            var unitF22 = GameManager.Instance.GameData.CreateUnit(player1, group1, "f22", "", landPos, true);

            unitF22.UserDefinedElevation = GameConstants.HeightDepthPoints.Low;
            unitF22.MovementOrder        = new MovementOrder(new Waypoint(new Position(new Coordinate(60, 0))));
            unitF22.MoveToNewCoordinate(10);

            Assert.IsTrue(unitF22.Position.HeightOverSeaLevelM > heightLandM, "F22 should be above land terrain at position.");
            unitF22.Position = seaPos.Clone();

            unitF22.Position.HeightOverSeaLevelM = 161;

            unitF22.TerrainHeight10SecForwardM = -500;
            unitF22.TerrainHeight30SecForwardM = -500;
            unitF22.TerrainHeightAtPosM        = -500;

            unitF22.MoveToNewCoordinate(10);

            Assert.IsTrue(unitF22.DesiredHeightOverSeaLevelM == 100, "The unit's desired height should be 100.");



            TerrainReader.CloseMemoryMap();
        }
Example #3
0
        public void DetectionOverTerrainTest()
        {
            Player player = new Player();

            player.Name             = "GoodGuy";
            player.IsComputerPlayer = true;
            Player playerEnemy = new Player();

            playerEnemy.Name             = "BadGuy";
            playerEnemy.IsComputerPlayer = true;

            Group group = new Group();

            GameManager.Instance.GameData.InitAllData();
            Game game = GameManager.Instance.CreateGame(player, "test game");

            game.Players.Add(player);
            game.Players.Add(playerEnemy);

            GameManager.Instance.Game.SetAllPlayersEnemies();
            TerrainReader.LoadMemoryMap();
            Position posLand1        = new Position(61.16825, 5.21027, 20, 120);
            var      posLand1heightM = TerrainReader.GetHeightM(posLand1.Coordinate);

            Assert.IsTrue(posLand1heightM > 0, "Terrain at pos1land should be land.");

            var unitF22 = GameManager.Instance.GameData.CreateUnit(player, group, "f22", "f22", posLand1, true);

            unitF22.SetSensorsActivePassive(TTG.NavalWar.NWComms.GameConstants.SensorType.Radar, true);
            var unitEnemyBurke = GameManager.Instance.GameData.CreateUnit(playerEnemy, group, "arleighburke", "Enemy Burke", posLand1, true);

            unitF22.SensorSweep();

            var detBurke = player.DetectedUnits.FirstOrDefault <DetectedUnit>();

            Assert.IsTrue(detBurke != null, "Enemy burke should have been detected.");

            //61.16825 , 5.21027 land
            //61.18935 , 5.21027 vann
            //61.19935, , 5.21027 land igjen?
            TerrainReader.CloseMemoryMap();
        }
Example #4
0
        public void TerrainLineTest()
        {
            var    startCoord = new Coordinate(60, 4);
            var    endCoord   = new Coordinate(62, 6);
            var    noOfPoints = 10;
            double bearingDeg;
            double distanceM;
            var    distM     = MapHelper.CalculateDistanceApproxM(startCoord, endCoord);
            var    coordList = TerrainReader.GetCoordinateLine(startCoord, endCoord, noOfPoints, out bearingDeg, out distanceM);

            //TerrainReader.CloseMemoryMap();
            TerrainReader.LoadMemoryMap();
            var testHeightM = TerrainReader.GetHeightM(new Coordinate(60, 5));

            Assert.IsTrue(testHeightM != 0, "Test height should not be 0. Memory map not loaded.");
            var sw      = Stopwatch.StartNew();
            var heights = TerrainReader.GetHeightArrayM(coordList);

            sw.Stop();
            var time10coordsMs = sw.ElapsedMilliseconds;

            GameManager.Instance.Log.LogDebug("TerrainLineTest: Get 10 coords: " + time10coordsMs + " ms");
            sw.Start();
            endCoord = new Coordinate(55, 13);
            var summary10 = TerrainReader.GetTerrainHeightSummary(startCoord, endCoord, 10);

            sw.Stop();
            var time10coordsSummaryMs = sw.ElapsedMilliseconds;

            GameManager.Instance.Log.LogDebug("TerrainLineTest: Get 10 coords summary: " + time10coordsSummaryMs + " ms");
            sw.Start();
            var terrainSummary = TerrainReader.GetTerrainHeightSummary(startCoord, endCoord, 1000);

            sw.Stop();
            var time1000coordsSummaryMs = sw.ElapsedMilliseconds;

            GameManager.Instance.Log.LogDebug("TerrainLineTest: Get 1000 coords summary: " + time1000coordsSummaryMs + " ms");
            TerrainReader.CloseMemoryMap();
        }
Example #5
0
 public void CreateTraverableList()
 {
     TerrainReader.LoadMemoryMap();
     TerrainReader.CreateTraversableNodeMap();
 }
Example #6
0
 public void TestTerrainData()
 {
     TerrainReader.TestSomeCoordinates();
 }