internal static bool CanFindQueen(BaseTile initialRoom, BaseTile queenRoom) { ResetList(); if (initialRoom.RoomScript != null && !initialRoom.RoomScript.IsRoom()) { return(false); } BaseTilePriorityQueue queue = new BaseTilePriorityQueue(); queue.push(initialRoom); BaseTile currTile; while ((currTile = queue.pop(queenRoom.transform.position)) != null) { if (currTile == queenRoom) { return(true); } currTile.AstarVisited = true; foreach (var neighbor in currTile.Neighbors) { if (neighbor.RoomScript == null || (neighbor.RoomScript != null && neighbor.RoomScript.IsRoom())) { queue.push(neighbor); } } } return(false); }
public static bool CanFindOwnNeighbor(BaseTile start, BaseTile end, List <BaseTile> ignoreList) { ResetList(); foreach (var tile in ignoreList) { tile.AstarVisited = true; } BaseTilePriorityQueue queue = new BaseTilePriorityQueue(); queue.push(start); BaseTile currTile; while ((currTile = queue.pop(end.transform.position)) != null) { if (currTile == end) { return(true); } if (currTile.AstarVisited) { continue; } currTile.AstarVisited = true; foreach (var neighbor in currTile.Neighbors) { if (neighbor.RoomScript != null && neighbor.RoomScript.IsRoom() && neighbor.RoomScript.GetType() == currTile.RoomScript.GetType()) { queue.push(neighbor); } } } return(false); }