Example #1
0
        private void UpdateLocationsBlocked()
        {
            blockedLocationDirections.Clear();

            if (LastNavigationBlockedPoints.Count > 0)
            {
                var Locations = LastNavigationBlockedPoints.Select(item => CurrentLocationBoundary.ComputeOutCode(item.X, item.Y)).ToList();

                if (Locations.Count > 2)
                {
                    //TOP
                    if (Locations.Count(p => p.HasFlag(LocationFlags.Top)) > 2)
                    {
                        blockedLocationDirections.Add(LocationFlags.Top);
                    }
                    //BOTTOM
                    if (Locations.Count(p => p.HasFlag(LocationFlags.Bottom)) > 2)
                    {
                        blockedLocationDirections.Add(LocationFlags.Bottom);
                    }
                    //LEFT
                    if (Locations.Count(p => p.HasFlag(LocationFlags.Left)) > 2)
                    {
                        blockedLocationDirections.Add(LocationFlags.Left);
                    }
                    //RIGHT
                    if (Locations.Count(p => p.HasFlag(LocationFlags.Right)) > 2)
                    {
                        blockedLocationDirections.Add(LocationFlags.Right);
                    }
                }

                //CHECK CORNERS
                if (!blockedLocationDirections.Contains(LocationFlags.Bottom))
                {
                    if (!blockedLocationDirections.Contains(LocationFlags.Left) && Locations.Count(p => p.HasFlag(LocationFlags.BottomLeft)) > 0)
                    {
                        blockedLocationDirections.Add(LocationFlags.BottomLeft);
                    }
                    if (!blockedLocationDirections.Contains(LocationFlags.Right) && Locations.Count(p => p.HasFlag(LocationFlags.BottomRight)) > 0)
                    {
                        blockedLocationDirections.Add(LocationFlags.BottomRight);
                    }
                }
                if (!blockedLocationDirections.Contains(LocationFlags.Top))
                {
                    if (!blockedLocationDirections.Contains(LocationFlags.Left) && Locations.Count(p => p.HasFlag(LocationFlags.TopLeft)) > 0)
                    {
                        blockedLocationDirections.Add(LocationFlags.TopLeft);
                    }
                    if (!blockedLocationDirections.Contains(LocationFlags.Right) && Locations.Count(p => p.HasFlag(LocationFlags.TopRight)) > 0)
                    {
                        blockedLocationDirections.Add(LocationFlags.TopRight);
                    }
                }

                //Logger.DBLog.DebugFormat("Blocked Directions Count == [{0}]", blockedLocationDirections.Count.ToString());
            }
        }
Example #2
0
 public bool CheckPointAgainstBlockedDirection(GridPoint point)
 {
     if (blockedLocationDirections.Count > 0)
     {
         LocationFlags pointFlags = CurrentLocationBoundary.ComputeOutCode(point.X, point.Y);
         return(blockedLocationDirections.Contains(pointFlags));
     }
     return(false);
 }