Example #1
0
    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);
    }
Example #2
0
    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);
        }
    }