void GenerateCompass_Random(Maze maze) { int numCompass = Formula.CalculateCompassNum(level.mazeDifficulty); List <Tile> tileList = MazeUTL.UpdateTileListWithDesiredWallLayout(maze.mazeTileList, WallLayout.C); List <Tile> tiles = GetItemSpawnRandomTiles(numCompass, Formula.CalculateItemLeastDistance(LevelManager.instance.mazeDifficulty), new List <Tile>(), tileList, TilesWithItem); Utilities.TryCatchError((tiles.Count < numCompass), "Can't find enough tiles to spawn Compasses. Please check the range condition."); for (int i = 0; i < numCompass; i++) { tiles[i].SpawnTileItem(level.CompassPrefab); TilesWithItem.Add(tiles[i]); } }
void GenerateObjective_Random(Maze maze) { // Make sure the objective is at least half map aways from the start point. Also, make it spawn at C shape wall layout. List <Tile> orgs = new List <Tile>(); orgs.Add(level.tileStart); List <Tile> tileList = MazeUTL.UpdateTileListOutOfRange(maze.mazeTileList, orgs, Formula.CalculateObjectiveLeastDistance(LevelManager.instance.mazeDifficulty)); tileList = MazeUTL.UpdateTileListWithDesiredWallLayout(tileList, WallLayout.C); Tile tile = MazeUTL.GetRandomTileFromList(tileList); tile.SpawnTileItem(level.objectivePrefab); level.tileObjective = tile; TilesWithItem.Add(tile); }
void GenerateBodyPartChest_Random(Maze maze) { // Calculate the number of items needed to spawn for this maze int numChests = Formula.CalculateBodyPartChestNum(level.mazeDifficulty); numChests = numChests < level.mazeSetting.bodyParts.Count ? numChests : level.mazeSetting.bodyParts.Count; List <Tile> tileList = MazeUTL.UpdateTileListWithDesiredWallLayout(maze.mazeTileList, WallLayout.C); List <Tile> tiles = GetItemSpawnRandomTiles(numChests, Formula.CalculateItemLeastDistance(LevelManager.instance.mazeDifficulty), new List <Tile>(), tileList, TilesWithItem); Utilities.TryCatchError((tiles.Count < numChests), "Can't find enough tiles to spawn Body Part Chests. Please check the range condition."); List <BodyPart> partList = GetBodyPartList(numChests); for (int i = 0; i < numChests; i++) { TileItem item = tiles[i].SpawnTileItem(level.BodyPartChestPrefab); TilesWithItem.Add(tiles[i]); item.bodyPart = partList[i]; } }