public void InvokeLevelClosed() { InvokePauseLevel(true); Debug.Log("Event Closed Invoked"); LevelClosedEvent?.Invoke(); UnloadScene(); LauncherUI.Instance.InvokeGameSceneUnloaded(); }
/// <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); } } }