Files
plugin-library/Assets/Domain/Test/HotUpdate/Application/UIViews/UIMessageBoxView.cs
2025-09-24 15:34:24 +08:00

128 lines
3.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
using TMPro;
namespace Stary.Evo
{
public enum MessageBoxType
{
TwoButton,
OneButton,
}
public class MessageBoxData
{
const string DefaultConfirmName = "确认";
const string DefaultCancelName = "取消";
public string title;
public string content;
public Action confirm;
public Action cancel;
public string confirmName;
public string cancelName;
public MessageBoxType type;
public MessageBoxData Set(string title, string content, Action confirm, Action cancel = null
, string confirmName = DefaultConfirmName, string cancelName = DefaultCancelName)
{
this.title = title;
this.content = content;
this.confirm = confirm;
this.cancel = cancel;
this.confirmName = confirmName;
this.cancelName = cancelName;
this.type = MessageBoxType.TwoButton;
return this;
}
public MessageBoxData SetOneButton(string title, string content, Action confirm, Action cancel = null
, string confirmName = DefaultConfirmName)
{
this.title = title;
this.content = content;
this.confirm = confirm;
this.cancel = cancel;
this.confirmName = confirmName;
this.cancelName = null;
this.type = MessageBoxType.OneButton;
return this;
}
}
public class UIMessageBoxView : UIView
{
#region
#pragma warning disable 0649
[ControlBinding]
protected Button ButtonConfirm;
[ControlBinding]
protected TextMeshProUGUI TextTitle;
[ControlBinding]
protected TextMeshProUGUI TextContent;
[ControlBinding]
protected Button[] ButtonCloses;
[ControlBinding]
protected TextMeshProUGUI TextConfirm;
[ControlBinding]
protected TextMeshProUGUI TextCancel;
#pragma warning restore 0649
#endregion
MessageBoxData data;
public override void OnInit(UIControlData uIControlData, UIViewController controller)
{
base.OnInit(uIControlData, controller);
foreach (var button in ButtonCloses)
{
button.AddClick(() =>
{
data.cancel?.Invoke();
UIManager.Instance.Close(this);
});
}
ButtonConfirm.AddClick(() =>
{
data.confirm?.Invoke();
UIManager.Instance.Close(this);
});
}
public override void OnOpen(object userData)
{
base.OnOpen(userData);
data = userData as MessageBoxData;
TextTitle.text = data.title;
TextContent.text = data.content;
TextConfirm.text = data.confirmName;
TextCancel.text = data.cancelName;
LayoutRebuilder.ForceRebuildLayoutImmediate(TextContent.rectTransform);
ButtonCloses[1].gameObject.SetActive(data.type == MessageBoxType.TwoButton);
}
public override void OnAddListener()
{
base.OnAddListener();
}
public override void OnRemoveListener()
{
base.OnRemoveListener();
}
public override void OnClose()
{
base.OnClose();
ObjectPool<MessageBoxData>.Release(data);
}
}
}