128 lines
3.6 KiB
C#
128 lines
3.6 KiB
C#
|
|
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);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|