Exemplo n.º 1
0
    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;
                }
            }
        }
    }