/// <summary> /// Gets the ward polygon. /// </summary> /// <param name="w">The ward.</param> /// <returns></returns> private static List <Vector2> GetWardPolygon(Ward w) { var position = w.Position; var closeWards = GetWardsCloseTo(w); var polygonsList = closeWards.Select(enemy => new Utility.Geometry.Circle(position.LSTo2D(), w.WardTypeW.WardVisionRange).ToPolygon()).ToList(); var pathList = Utility.Geometry.ClipPolygons(polygonsList); var pointList = pathList.SelectMany(path => path, (path, point) => new Vector2(point.X, point.Y)).Where(currentPoint => !currentPoint.LSIsWall()).ToList(); return(pointList); }
/// <summary> /// Gets the wards close to another ward. /// </summary> /// <param name="w">The ward.</param> /// <returns></returns> private static List<Ward> GetWardsCloseTo(Ward w) { return WardTrackerVariables.detectedWards.Where(m => m.Position.Distance(w.Position, true) <= Math.Pow(w.WardTypeW.WardVisionRange, 2)).ToList(); }
/// <summary> /// Gets the ward polygon. /// </summary> /// <param name="w">The ward.</param> /// <returns></returns> private static List<Vector2> GetWardPolygon(Ward w) { var position = w.Position; var closeWards = GetWardsCloseTo(w); var polygonsList = closeWards.Select(enemy => new Utility.Geometry.Circle(position.To2D(), w.WardTypeW.WardVisionRange).ToPolygon()).ToList(); var pathList = Utility.Geometry.ClipPolygons(polygonsList); var pointList = pathList.SelectMany(path => path, (path, point) => new Vector2(point.X, point.Y)).Where(currentPoint => !currentPoint.IsWall()).ToList(); return pointList; }
/// <summary> /// Gets the wards close to another ward. /// </summary> /// <param name="w">The ward.</param> /// <returns></returns> private static List <Ward> GetWardsCloseTo(Ward w) { return(WardTrackerVariables.detectedWards.Where(m => m.Position.LSDistance(w.Position, true) <= Math.Pow(w.WardTypeW.WardVisionRange, 2)).ToList()); }