Files
plugin-library/Assets/Domain/Test/HotUpdate/Application/UIViews/UIMessageBoxView.cs

128 lines
3.6 KiB
C#
Raw Normal View History

2025-09-24 15:34:24 +08:00
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);
}
}
}