Esempio n. 1
0
        private IOneUnitController GetRUn(IntVector2 position)
        {
            var list = _occupatedPossitionsMap.GetUnitsInRegion(new IntVector2(0, 0), new IntVector2(15, 15));

            IOneUnitController p = null;

            foreach (var unit in list)
            {
                if (unit.Position.Equals(Player.Position))
                {
                    p = unit;
                }
            }

            if (p != null)
            {
                list.Remove(p);
            }

            if (list.IsNullOrEmpty())
            {
                return(null);
            }

            var u = NearestUnitResolver.GetNearestUnit(position, list);

            return(u);
        }
Esempio n. 2
0
        public void GetUnitsInRegion_AnyPosition_ShouldReturnCorrect(List <OneUnitControllerMock> units, List <IOneUnitController> expectedUnits, IntVector2 point1, IntVector2 point2)
        {
            InitializeMap(units);

            var actualUnits = _occupatedPossitionsMap.GetUnitsInRegion(point1, point2);

            var expectedResult = UnitsToPositionsList(expectedUnits);
            var actualResult   = UnitsToPositionsList(actualUnits);

            Assert.True(actualResult.SequenceEqual(expectedResult));
        }
Esempio n. 3
0
        private IOneUnitController GetNearestUnitInArea(ChaosBattlefield.SquareArea area, IntVector2 unitPosition)
        {
            var unitsWithDistances = new Dictionary <IOneUnitController, int>();

            var unitsInRegion = _occupatedPossitionsMap.GetUnitsInRegion(area.TopLeft, area.BottomRight);

            unitsInRegion.ForEach(u =>
            {
                if (!u.Position.Equals(unitPosition) && !(u is PlayerController))
                {
                    unitsWithDistances.Add(u, u.Position.GetEmpiricalValueForPoint(unitPosition));
                }
            });

            if (unitsWithDistances.Count == 0)
            {
                return(null);
            }

            var ordered = unitsWithDistances.OrderBy(u => u.Value);

            return(ordered.First().Key);
        }