Exemple #1
0
        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);
            }
        }
Exemple #2
0
 /**
  * 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);
                 }
             }
         }
     }
 }