2025-03-18 11:08:17 +08:00

91 lines
2.4 KiB
C#

using UnityEngine;
using UnityEngine.UI;
using QFramework;
using TMPro;
using System;
using static OperationController;
using System.Text.RegularExpressions;
namespace QFramework.Example
{
public class UIResultTipData : UIPanelData
{
public bool isRight = false;
public string label;
public float autoHideTime = -1;
public Action callback;
}
public partial class UIResultTip : UIPanel
{
protected override void OnInit(IUIData uiData = null)
{
mData = uiData as UIResultTipData ?? new UIResultTipData();
Right.gameObject.SetActive(false);
Wrong.gameObject.SetActive(false);
TypeEventSystem.Global.Register<OnModuleQuit>((arg) => Hide()).UnRegisterWhenGameObjectDestroyed(gameObject);
}
private void OnStepChanged(StepStatusOnChange change)
{
Hide();
}
protected override void OnOpen(IUIData uiData = null)
{
transform.SetAsLastSibling();
TypeEventSystem.Global.Register<StepStatusOnChange>(OnStepChanged).UnRegisterWhenDisabled(gameObject);
Right.gameObject.SetActive(false);
Wrong.gameObject.SetActive(false);
mData = uiData as UIResultTipData ?? new UIResultTipData();
GameObject obj;
if (mData.isRight)
{
obj = Right.gameObject;
}
else
{
obj = Wrong.gameObject;
}
obj.SetActive(true);
var text = obj.transform.Find("Bg/Label").GetComponent<TextMeshProUGUI>();
text.text = Regex.Unescape(mData.label);
if (mData.autoHideTime == -1)
{
Button btn = obj.GetComponent<Button>();
btn.onClick.RemoveAllListeners();
btn.onClick.AddListener(() =>
{
SetHide();
});
}
else
{
ActionKit.Delay(mData.autoHideTime, () =>
{
SetHide();
}).Start(this);
}
}
public void SetHide()
{
mData.callback?.Invoke();
Hide();
}
protected override void OnShow()
{
}
protected override void OnHide()
{
}
protected override void OnClose()
{
}
}
}