int[,] CreateMaze(World world) { int[,] maze = generateMaze(world); // Create the maze; 0 = floor, 1 = wall; for (int x = 0; x < world.Width; ++x) { for (int y = 0; y < world.Height; ++y) { Tile tile_data = world.GetTileAt(x, y); GameObject tile_go = new GameObject(); tile_go.transform.SetParent(tileHolder.transform); // Put tile under WorldController's hiearchy tile_go.name = "Tile_" + x + "_" + y; tile_go.transform.position = new Vector3(x, y, 0); //SpriteRenderer tile_sr = tile_go.AddComponent <SpriteRenderer> (); // the TileTypeChanged callback updates the sprite as a tile's type is changed tile_data.RegisterTileTypeChangedCallBack((tile) => { OnTileTypeChanged(tile, tile_go); }); if (maze [x, y] == 0) { // Since the maze has an exit, if a floor tile lies on the outer edge, it's the exit if (x == 0 || x == world.Width - 1 || y == 0 || y == world.Height - 1) { tile_data.Type = Tile.TileType.Exit_Door; BoxCollider2D bc = tile_go.AddComponent <BoxCollider2D> (); //bc.isTrigger = true; // The exit door will be a trigger to build a new world (or go to level 2) ExitDoorController exit = tile_go.AddComponent <ExitDoorController>(); exit.RegisterExitDoorReached(() => { OnExitDoorReached(); }); tile_go.tag = "ExitDoor"; } else { Destroy(tile_go.GetComponent <BoxCollider2D>()); tile_data.Type = Tile.TileType.Floor; int element = GetWallTile(world, maze, x, y); if (element == 7 || element == 11 || element == 13 || element == 14) { deadEndLocations.Add(new Vector2(x, y)); } } } else { tile_go.AddComponent <BoxCollider2D>(); // Walls need to have a collider int element = GetWallTile(world, maze, x, y); tile_data.Type = (Tile.TileType)element; // set TileType using a (cast)enum_integer } } } for (int i = 0; i < deadEndLocations.Count; ++i) { Debug.Log(deadEndLocations [i]); } return(maze); }
private void Start() { exitDoorController = GameObject.FindWithTag("Exit Door").GetComponent <ExitDoorController>(); waveUI = GameObject.Find("Wave Indicator UI").GetComponent <EnemyWavesUI>(); if (enemyWaves.Length <= 1) { waveUI.ToggleUI(false); } }