DCS/ruiyiweiUX/Assets/GeneralTools/Scripts/Always/MessageBox/MessageBox.cs

130 lines
4.5 KiB
C#
Raw Permalink Normal View History

2026-06-09 13:59:11 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace GeneralTools
{
/// <summary>
/// 3.10更新 GUI改成UGUI CANVAS预设
/// </summary>
public class MessageBox : SingletonBaseAttribute<MessageBox>
{
protected SetMessageShow messageShow;
protected SetNoticeShow noticeShow;
protected SetProgressBarShow progressBarShow;
static List<MessageShowClass> messageShowList = new List<MessageShowClass>();
public override void IAwake()
{
base.IAwake();
if(messageShow==null)
{
messageShow = UtilityTool.FindChild<SetMessageShow>(transform, "MessageShowCanvas");
messageShow.Hide();
}
if (noticeShow == null)
{
noticeShow = UtilityTool.FindChild<SetNoticeShow>(transform, "NoticeShow");
noticeShow.Hide();
}
if (progressBarShow == null)
{
progressBarShow = UtilityTool.FindChild<SetProgressBarShow>(transform, "ProgressBarShow");
progressBarShow.Hide();
}
}
public void Show(string tittleStr, string messageStr, string buttonStr, Action action, string messageName = "通用")
{
AddMessageToList(tittleStr, messageStr, buttonStr, action, messageName);
}
public void Show(string messageStr, string buttonStr, Action action, string messageName = "通用")
{
AddMessageToList("提示", messageStr, buttonStr, action, messageName);
}
public void Show(string messageStr, Action action, string messageName = "通用")
{
AddMessageToList("提示", messageStr, "确认", action, messageName);
}
public void Show(string tittleStr, string messageStr, string messageName = "通用")
{
AddMessageToList(tittleStr, messageStr, "确认", Hide, messageName);
}
public void Show(string messageStr)
{
AddMessageToList("提示", messageStr, "确认", Hide, "通用");
}
public void Hide()
{
int removeIndex = messageShowList.Count - 1;
if (removeIndex >= 0)
messageShowList.RemoveAt(removeIndex);
int maxIndex = messageShowList.Count - 1;
if (maxIndex < 0)
{
messageShow.Hide();
}
else
{
MessageShowClass m = messageShowList[maxIndex];
messageShow.Show(m, Hide);
}
}
public void Hide(string messageName)
{
messageShowList.RemoveAll(m => m.messageName == messageName);
int maxIndex = messageShowList.Count - 1;
if (maxIndex < 0)
{
messageShow.Hide();
}
else
{
MessageShowClass m = messageShowList[maxIndex];
messageShow.Show(m, Hide);
}
}
public void ShowNotice(string tittleStr, string messageStr)
{
noticeShow.Show(tittleStr, messageStr);
}
public void HideNotice()
{
noticeShow.Hide();
}
public void ShowProgressBar(string tittleStr, string numStr, float progress)
{
progressBarShow.Show(tittleStr, numStr, progress);
}
public void HideProgressBar()
{
progressBarShow.Hide();
}
private void AddMessageToList(string tittleStr, string messageStr, string buttonStr, Action action, string messageName)
{
MessageShowClass newMessage = new MessageShowClass(tittleStr, messageStr, buttonStr, action, messageName);
messageShowList.Add(newMessage);
messageShow.Show(newMessage, Hide);
}
}
public class MessageShowClass
{
public string tittleStr;
public string messageStr;
public string buttonStr;
public Action action;
public string messageName;
public MessageShowClass()
{
}
public MessageShowClass(string _tittleStr, string _messageStr, string _buttonStr, Action _action, string _messageName)
{
tittleStr = _tittleStr;
messageStr = _messageStr;
buttonStr = _buttonStr;
action = _action;
messageName = _messageName;
}
}
}