public void ShowScreen(Type screen_type) { if (LoadingScreen.Get().m_Active) { return; } if (!this.m_Initialized) { this.Init(); } MenuScreen menuScreen = null; this.m_Screens.TryGetValue(screen_type, out menuScreen); if (!menuScreen) { DebugUtils.Assert("[MenuInGameManager::ShowScreen] Can't find screen " + screen_type.ToString() + "!", true, DebugUtils.AssertType.Info); return; } if (menuScreen == this.m_CurrentScreen) { return; } PostProcessManager.Get().SetWeight(PostProcessManager.Effect.InGameMenu, 1f); this.m_OutlineCamera.enabled = false; if (this.m_PreviousScreens.Contains(screen_type)) { while (this.m_PreviousScreens.Peek() != screen_type) { this.m_PreviousScreens.Pop(); } } else { this.m_PreviousScreens.Push(screen_type); } if (this.m_CurrentScreen) { this.m_CurrentScreen.Hide(); } else { Player.Get().BlockMoves(); Player.Get().BlockRotation(); if (GreenHellGame.IsPCControllerActive() || menuScreen.IsDebugScreen()) { CursorManager.Get().ShowCursor(true, false); this.m_CursorVisible = true; } if (menuScreen.ShouldPauseGame()) { MainLevel.Instance.Pause(true); } } menuScreen.Show(); this.m_CurrentScreen = menuScreen; if (GreenHellGame.IsPadControllerActive() && screen_type == typeof(MenuInGame)) { foreach (Type type in this.m_Screens.Keys) { if (screen_type != type) { this.m_Screens[type].m_ActiveMenuOption = null; } } } }