Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / pauseMenu / PauseMenuPanel.cs
using Godot;

namespace UI.PauseMenu;

public partial class PauseMenuPanel : PauseMenu
{

    public override void OnCreateUi()
    {
        S_Continue.Instance.Pressed += OnContinueClick;
        S_Setting.Instance.Pressed += OnSettingClick;
        S_Encyclopedia.Instance.Pressed += OnEncyclopediaClick;
        S_Restart.Instance.Pressed += OnRestartClick;
        S_Exit.Instance.Pressed += OnExitClick;
        
        if (GameApplication.Instance.DungeonManager.IsEditorMode) //在编辑器模式下打开的Ui
        {
            S_Exit.Instance.Text = "返回编辑器";
        }
        else if (World.Current is Dungeon) //在游戏地牢中
        {
            S_Exit.Instance.Text = "退出地牢";
        }
        else //在大厅中
        {
            S_Restart.Instance.Visible = false;
        }
    }
    
    public override void OnShowUi()
    {
        GameCamera.Main.LockCamera();
    }
    
    public override void OnHideUi()
    {
        GameCamera.Main.UnLockCamera();
    }

    public override void Process(float delta)
    {
        if (Input.IsActionJustPressed("ui_cancel")) //返回游戏
        {
            OnContinueClick();
        }
    }

    //继续游戏
    private void OnContinueClick()
    {
        World.Current.Pause = false;
        GameApplication.Instance.Cursor.SetGuiMode(false);
        Destroy();
    }

    //设置
    private void OnSettingClick()
    {
        OpenNextUi(UiManager.UiNames.Setting);
    }

    //图鉴
    private void OnEncyclopediaClick()
    {
        OpenNextUi(UiManager.UiNames.Encyclopedia);
    }

    //重新开始
    private void OnRestartClick()
    {
        Destroy();
        if (GameApplication.Instance.DungeonManager.IsEditorMode) //在编辑器模式下打开的Ui
        {
            EditorPlayManager.Restart();
        }
        else //正常重新开始
        {
            UiManager.Open_Loading();
            GameApplication.Instance.DungeonManager.RestartDungeon(false, GameApplication.Instance.FirstDungeonConfig, () =>
            {
                UiManager.Destroy_Loading();
            });
        }
    }

    //退出地牢
    private void OnExitClick()
    {
        Destroy();
        if (GameApplication.Instance.DungeonManager.IsEditorMode) //在编辑器模式下打开的Ui
        {
            EditorPlayManager.Exit();
        }
        else if (World.Current is Dungeon) //在游戏地牢中
        {
            UiManager.Open_Loading();
            GameApplication.Instance.DungeonManager.ExitDungeon(false, () =>
            {
                GameApplication.Instance.DungeonManager.LoadHall(() =>
                {
                    UiManager.Destroy_Loading();
                });
            });
        }
        else //在大厅中
        {
            UiManager.Open_Loading();
            GameApplication.Instance.DungeonManager.ExitHall(false, () =>
            {
                UiManager.Destroy_Loading();
                UiManager.Open_Main();
            });
        }
    }
}