//this is called only once, and the paramter tell it to be called only after the scene was loaded
        //(otherwise, our Scene Load callback would be called the very first load, and we don't want that)

        /*[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
         * static public void CallbackInitialization()
         * {
         *      //register the callback to be called everytime the scene is loaded
         *      SceneManager.sceneLoaded += OnSceneLoaded;
         * }
         *
         * //This is called each time a scene is loaded.
         * static private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
         * {
         *      Debug.Log("Loading Scene");
         *      instance.InitGame();
         * }
         */

        //Initializes the game for each level.
        public void InitGame()
        {
            //Debug.Log("Init Game Cave");
            player.enabled = false;
            //While doingSetup is true the player can't move, prevent player from moving while title card is up.
            doingSetup = true;

            //Get a reference to our image LevelImage by finding it by name.


            //Get a reference to our text LevelText's text component by finding it by name and calling GetComponent.


            level++;
            //Set the text of levelText to the string "Day" and append the current level number.
            levelText.text = "Level " + level;

            //Set levelImage to active blocking player's view of the game board during setup.
            levelImage.SetActive(true);



            //Clear any Enemy objects in our List to prepare for next level.
            foreach (EnemyBuilder enemy in enemies)
            {
                enemy.DeleteEnemy();
                Destroy(enemy.gameObject);
            }

            enemies = new List <EnemyBuilder>();

            mapGenerator.GenerateFirstMap();

            player.playerPosition     = mapGenerator.randomStartingLocation;
            player.transform.position = player.playerPosition;


            //Call the HideLevelImage function with a delay in seconds of levelStartDelay.
            Invoke("HideLevelImage", levelStartDelay);

            /*if (!mapInitialized)
             * {
             *      mapGenerator.GenerateFirstMap();
             *      mapInitialized = true;
             * }
             * //Call the SetupScene function of the BoardManager script, pass it current level number.
             * else
             * {
             *      mapGenerator.GenerateNewMap();
             * }
             */
        }