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

125 lines
3.3 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, Action cancel = null)
{
CommonUtils.CaptureScreenshot(); // 截取当前屏幕截图
WindowData WindowData = new(content, confirm, cancel);
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 Action CancelAction { get; private set; }
public WindowData(string content, Action confirm, Action cancelAction)
{
Content = content;
ConfirmAction = confirm;
CancelAction = cancelAction;
}
}
#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;
private Action cancelAction;
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;
cancelAction = windowData.CancelAction;
}
}
private void OnConfirm()
{
AudioManager.Instance.PlayAudio(Framework.Constants.Sound.COMMON_CLICK);
confirmAction?.Invoke();
CloseWindow();
}
private void OnClose()
{
AudioManager.Instance.PlayAudio(Framework.Constants.Sound.COMMON_CLICK);
cancelAction?.Invoke();
CloseWindow();
}
public override UniTask<bool> OnBack(object data = null)
{
cancelAction?.Invoke();
return base.OnBack(data);
}
}