public void InvokeLevelClosed()
 {
     InvokePauseLevel(true);
     Debug.Log("Event Closed Invoked");
     LevelClosedEvent?.Invoke();
     UnloadScene();
     LauncherUI.Instance.InvokeGameSceneUnloaded();
 }
Exemple #2
0
        /// <summary>
        ///     Unloads & unregisters a level from the current <see cref="OpenLevelManager"/>
        /// </summary>
        /// <param name="openLevel">The level to unload</param>
        public void UnloadLevel(OpenLevel openLevel)
        {
            OpenLevel l;

            if (_levels.TryRemove(openLevel.LevelId, out l))
            {
                Levels.Remove(openLevel);

                LevelClosedEvent levelClosed = new LevelClosedEvent(openLevel);
                openLevel.EventDispatcher.DispatchEvent(levelClosed);
                //OnLevelDestroyed?.Invoke(openLevel);
                openLevel.Close();
                Log.InfoFormat("Level destroyed: {0}", openLevel.LevelId);
            }
        }
        /// <summary>
        ///     Unloads & unregisters a level from the current <see cref="OpenLevelManager"/>
        /// </summary>
        /// <param name="openLevel">The level to unload</param>
        public void UnloadLevel(OpenLevel openLevel)
        {
            OpenLevel l;

            if (_levels.TryRemove(openLevel.LevelId, out l))
            {
                try
                {
                    Levels.Remove(openLevel);

                    openLevel.Close();
                    Log.InfoFormat("Level destroyed: {0}", openLevel.LevelId);
                }
                catch (Exception ex)
                {
                    Log.Warn($"Error while closing level: {l.LevelId}", ex);
                }
                finally
                {
                    LevelClosedEvent levelClosed = new LevelClosedEvent(openLevel);
                    openLevel.EventDispatcher.DispatchEvent(levelClosed);
                }
            }
        }