public Tilemap GetTileMap(MazeTilemap tilemap) { switch (tilemap) { case MazeTilemap.Floor: return(floorSpriteTilemap); case MazeTilemap.Walls: return(wallSpriteTilemap); case MazeTilemap.FloorObjects: return(floorObjectsTilemap); case MazeTilemap.WallsObjects: return(wallObjectsTilemap); default: return(floorSpriteTilemap); } }
/** * Enqueues new possible moves for the enemy based on the given position. * The KeyValuePair is used to keep track of the original chosen direction from the first level search. * This was done to easily get the winning original root decision. */ void EnqueueEmptyPositions(KeyValuePair <Direction, Vector3Int> directionPosition, ref Queue <KeyValuePair <Direction, Vector3Int> > queue, ref Queue <KeyValuePair <Direction, Vector3Int> > dequeued, bool isFirstLevel = false) { foreach (Direction direction in Enum.GetValues(typeof(Direction))) { Vector3Int newPosition = ConvertDirectionToPosition(directionPosition.Value, direction); if (MazeTilemap.isPositionEmpty(newPosition)) { if (isFirstLevel)//if this is a root decision, assign the direction into the keyvalue pair { queue.Enqueue(new KeyValuePair <Direction, Vector3Int>(direction, newPosition)); } else { KeyValuePair <Direction, Vector3Int> newDirectionPosition = new KeyValuePair <Direction, Vector3Int>(directionPosition.Key, newPosition); if (!queue.Contains(newDirectionPosition) && !dequeued.Contains(newDirectionPosition))//check if already visited { queue.Enqueue(newDirectionPosition); } } } } }