private static Target GetTownHallPoints(this TownHall th)
        {
            Target target = new Target();

            target.Center = th.Location.GetCenter(); //Center of the Town Hall that was found.
            target.Edge   = Origin.PointOnLineAwayFromEnd(target.Center, _townHallCenterToOuterEdgeDistance);

            target.NearestRedLine = GameGrid.RedPoints.OrderBy(p => p.DistanceSq(target.Edge)).First();
            target.EdgeToRedline  = target.Edge.DistanceSq(target.NearestRedLine);
            target.TargetBuilding = th;

            return(target);
        }
        public static PointFT FindClosestDeployPointOnLine(PointFT origin, PointFT start)
        {
            PointFT result = new PointFT();

            float counter = .5f;

            while (counter < 50)
            {
                var temp = origin.PointOnLineAwayFromEnd(start, counter);
                if (result.IsPointOutsideRedline())
                {
                    result = temp;
                    break;
                }

                counter = counter + .5f;
            }

            return(result);
        }