Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / editorTools / EditorToolsPanel.cs
@lijincheng lijincheng on 18 Mar 2023 2 KB EditorTools 显示 tips
using System;
using Generator;
using Godot;

namespace UI.EditorTools;

[Tool]
public partial class EditorToolsPanel : EditorTools
{
    //Tips 关闭回调
    private Action _onTipsClose;
    
    public override void OnShowUi(params object[] args)
    {
        L_Tips.Instance.OkButtonText = "确定";
        L_Tips.Instance.CloseRequested += OnTipsCloseRequested;
        L_ScrollContainer.L_MarginContainer.L_VBoxContainer.L_HBoxContainer3.L_Button.Instance.Pressed += OnCreateUI;
    }

    public override void OnHideUi()
    {
        L_Tips.Instance.CloseRequested -= OnTipsCloseRequested;
        L_ScrollContainer.L_MarginContainer.L_VBoxContainer.L_HBoxContainer3.L_Button.Instance.Pressed -= OnCreateUI;
    }

    /// <summary>
    /// Tips 关闭信号回调
    /// </summary>
    private void OnTipsCloseRequested()
    {
        if (_onTipsClose != null)
        {
            _onTipsClose();
            _onTipsClose = null;
        }
    }
    
    /// <summary>
    /// 打开提示窗口, 并设置宽高
    /// </summary>
    /// <param name="title">窗口标题</param>
    /// <param name="message">显示内容</param>
    /// <param name="width">窗口宽度</param>
    /// <param name="height">窗口高度</param>
    /// <param name="onClose">当窗口关闭时的回调</param>
    public void ShowTips(string title, string message, int width, int height, Action onClose = null)
    {
        var tips = L_Tips.Instance;
        tips.Size = new Vector2I(width, height);
        tips.Title = title;
        tips.DialogText = message;
        _onTipsClose = onClose;
        tips.Show();
    }
    
    /// <summary>
    /// 打开提示窗口
    /// </summary>
    /// <param name="title">窗口标题</param>
    /// <param name="message">显示内容</param>
    /// <param name="onClose">当窗口关闭时的回调</param>
    public void ShowTips(string title, string message, Action onClose = null)
    {
        var tips = L_Tips.Instance;
        tips.Title = title;
        tips.DialogText = message;
        _onTipsClose = onClose;
        tips.Show();
    }

    /// <summary>
    /// 关闭提示窗口
    /// </summary>
    public void CloseTips()
    {
        L_Tips.Instance.Hide();
        _onTipsClose = null;
    }
    
    private void OnCreateUI()
    {
        var text = L_ScrollContainer.L_MarginContainer.L_VBoxContainer.L_HBoxContainer3.L_LineEdit.Instance.Text;
        GD.Print("ui名称: " + text);
        ShowTips("创建Ui", "Ui名称: " + text, () =>
        {
            GD.Print("关闭Tips");
        });
    }
    
    private void OnCloseCreateUiConfirm()
    {
        //L_CreateUiConfirm.Instance.Hide();
    }
    
    /// <summary>
    /// 更新 ResourcePath
    /// </summary>
    private void _on_Button_pressed()
    {
        ResourcePathGenerator.Generate();
    }

    /// <summary>
    /// 重新打包房间配置
    /// </summary>
    private void _on_Button2_pressed()
    {
        RoomPackGenerator.Generate();
    }
}