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); }
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)); }
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); }