NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/UI_NameConfirmWindowControl...

111 lines
2.7 KiB
C#

using Cysharp.Threading.Tasks;
using Gameplay;
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 改名确认弹窗
/// </summary>
public class UI_NameConfirmWindowController : UIWindow
{
/// <summary>
/// 打开改名确认界面
/// </summary>
/// <returns></returns>
public static async UniTask<UIWindow> Open(string content, Action confirm = null)
{
await CommonUtils.CaptureScreenshot(); // 截取当前屏幕截图
WindowData WindowData = new(content, confirm);
return await UIManager.Instance.CreateAndOpenWindow(UINameConst.UI_NameConfirmWindow, WindowData);
}
/// <summary>
/// 窗口数据
/// </summary>
private class WindowData
{
/// <summary>
/// 内容
/// </summary>
public string Content { get; private set; }
/// <summary>
/// 确认回调
/// </summary>
public Action ConfirmAction { get;private set; }
public WindowData(string content, Action confirm)
{
Content = content;
ConfirmAction = confirm;
}
}
#region UI
/// <summary>
/// 高斯模糊遮罩
/// </summary>
private RawImage rawImageGaussianBlurMask;
/// <summary>
/// 确定按钮
/// </summary>
private Button buttonConfirm;
/// <summary>
/// 取消按钮
/// </summary>
private Button buttonCancel;
/// <summary>
/// 关闭按钮
/// </summary>
private Button buttonClose;
/// <summary>
/// 提示内容
/// </summary>
private TMP_Text textContent;
#endregion
private Action confirmAction;
public override void OnInit()
{
rawImageGaussianBlurMask = GetComponent<RawImage>("GaussianBlurMask");
buttonConfirm = GetComponent<Button>("Image_Bg/Button_Confirm");
buttonCancel = GetComponent<Button>("Image_Bg/Button_Cancel");
buttonClose = GetComponent<Button>("Image_Bg/Button_Close");
textContent = GetComponent<TMP_Text>("Image_Bg/Text_Info");
rawImageGaussianBlurMask.texture = CommonUtils.GetScreenTexture2D();
BindButton(buttonConfirm, OnConfirm);
BindButton(buttonCancel, OnClose);
BindButton(buttonClose, OnClose);
}
protected override void OnShowWindow(object data)
{
base.OnShowWindow(data);
if (data is WindowData windowData)
{
textContent.text = windowData.Content;
confirmAction = windowData.ConfirmAction;
}
}
private void OnConfirm()
{
confirmAction?.Invoke();
CloseWindow();
}
private void OnClose()
{
CloseWindow();
}
}