From d1b4f76d85e4f8f2d219e7c8d76510fee2441d8f Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期三, 13 二月 2019 11:59:37 +0800
Subject: [PATCH] 3335 信息提示优化
---
System/Message/MessageWin.cs | 321 +++++++++++++++++++++++++---------------------------
1 files changed, 155 insertions(+), 166 deletions(-)
diff --git a/System/Message/MessageWin.cs b/System/Message/MessageWin.cs
index 4b32aae..bfdfb3d 100644
--- a/System/Message/MessageWin.cs
+++ b/System/Message/MessageWin.cs
@@ -9,81 +9,11 @@
using DG.Tweening;
namespace Snxxz.UI
{
+ [XLua.Hotfix]
public class MessageWin : Window
{
- private static MessageWin _inst = null;
- public static MessageWin Inst
- {
- get
- {
- if (_inst == null)
- {
- _inst = WindowCenter.Instance.Get<MessageWin>();
- }
-
- return _inst;
- }
- }
-
- [SerializeField] RectTransform m_ContianerFixedTip0;
- [SerializeField] RichText m_FixedTip0;
-
- [SerializeField] List<RectTransform> m_ContianerFixedTips;
- [SerializeField] List<RichText> m_FixedTips;
- List<bool> m_FixedTipDisplays = new List<bool>();
-
- #region GM
- [SerializeField] GameObject gmPanel;
- [SerializeField] ScrollerController gmCtrl;
- [SerializeField] Toggle gmToggle;
- [SerializeField] Toggle gmUpdateToggle;
- [SerializeField] Button gmClose;
- #endregion
-
- public void ShowFixedTip(string tip, ArrayList infoList = null)
- {
- transform.SetAsLastSibling();
- m_FixedTip0.SetExtenalData(infoList);
- m_FixedTip0.text = tip;
- if (!m_ContianerFixedTip0.gameObject.activeInHierarchy)
- {
- m_ContianerFixedTip0.gameObject.SetActive(true);
- }
- m_ContianerFixedTip0.DoWaitRestart();
- }
-
- public void ShowFixedTips(string tip, ArrayList infoList = null)
- {
- transform.SetAsLastSibling();
- var _index = m_FixedTipDisplays.FindIndex((x) =>
- {
- return !x;
- });
- _index = _index == -1 ? 0 : _index;
- m_FixedTips[_index].SetExtenalData(infoList);
- m_FixedTips[_index].text = tip;
- m_FixedTipDisplays[_index] = true;
- if (!m_ContianerFixedTips[_index].gameObject.activeInHierarchy)
- {
- m_ContianerFixedTips[_index].gameObject.SetActive(true);
- }
- m_ContianerFixedTips[_index].DoWaitRestart();
- }
-
- private void OnHideFixedTip(Component com)
- {
- com.DoWaitStop();
- com.gameObject.SetActive(false);
-
- var _index = m_ContianerFixedTips.FindIndex((x) =>
- {
- return x.Equals(com);
- });
- if (_index != -1)
- {
- m_FixedTipDisplays[_index] = false;
- }
- }
+ [SerializeField] RectTransform m_ContainerNormalHint;
+ [SerializeField] RichText m_NormalHint;
[SerializeField] RectTransform m_ContainerServerTip;
[SerializeField] ScaleTween m_ServerTipScaleTween;
@@ -91,35 +21,142 @@
[SerializeField] RichText m_ServerTip;
[SerializeField, Header("鍏ㄦ湇骞挎挱鍋滅暀鏃堕棿")] float m_ServerTipKeepTime = 1.5f;
- private bool serverTipPrepared = true;
- public void ShowServerTip()
+ [SerializeField] RectTransform m_ContainerGM;
+ [SerializeField] ScrollerController m_ScrollControl;
+ [SerializeField] Toggle m_AutoPopToggle;
+ [SerializeField] Toggle m_AutoRefreshToggle;
+ [SerializeField] Button m_GMClose;
+
+ bool m_ServerTipPrepared = true;
+
+ protected override void BindController()
{
- if (!serverTipPrepared)
+ }
+
+ protected override void AddListeners()
+ {
+ m_ContainerNormalHint.OnWaitCompelete(OnHintDisplayComplete);
+ m_ScrollControl.OnRefreshCell += OnRefreshGmCell;
+ m_ScrollControl.lockType = EnhanceLockType.LockVerticalBottom;
+ m_GMClose.onClick.AddListener(OnGMClose);
+ }
+
+ protected override void OnPreOpen()
+ {
+ m_ServerTipPrepared = true;
+
+#if UNITY_EDITOR
+ m_ContainerGM.gameObject.SetActive(VersionConfig.Get().debugVersion);
+#else
+ m_ContainerGM.gameObject.SetActive(false);
+#endif
+ ServerTipDetails.normalHintRefresh += CheckNormalHint;
+ ServerTipDetails.serverHintRefresh += CheckServerHint;
+ ServerTipDetails.gmMessageRefresh += DisplayGM;
+ ServerTipDetails.gmOpenEvent += GmOpenEvent;
+ CheckNormalHint();
+ CheckServerHint();
+ DisplayGM(string.Empty);
+
+ if (ServerTipDetails.requireOpenGM)
+ {
+ if (hasOnFrom)
+ {
+ OnGMOpen();
+ }
+ ServerTipDetails.requireOpenGM = false;
+ }
+ }
+
+ protected override void OnAfterOpen()
+ {
+ }
+
+ protected override void OnPreClose()
+ {
+ ServerTipDetails.normalHintRefresh -= CheckNormalHint;
+ ServerTipDetails.serverHintRefresh -= CheckServerHint;
+ ServerTipDetails.gmMessageRefresh -= DisplayGM;
+ ServerTipDetails.gmOpenEvent -= GmOpenEvent;
+ }
+
+ protected override void OnAfterClose()
+ {
+ }
+
+ private void GmOpenEvent()
+ {
+ if (ServerTipDetails.requireOpenGM)
+ {
+ if (hasOnFrom)
+ {
+ OnGMOpen();
+ }
+ ServerTipDetails.requireOpenGM = false;
+ }
+ }
+
+ void CheckNormalHint()
+ {
+ var hint = ServerTipDetails.RequireNormalHint();
+ if (hint != null)
+ {
+ DisplayNormalHint(hint);
+ }
+ }
+
+ void DisplayNormalHint(SystemHintData hint)
+ {
+ transform.SetAsLastSibling();
+ m_NormalHint.SetExtenalData(hint.extentionData);
+ m_NormalHint.text = hint.message;
+ if (!m_ContainerNormalHint.gameObject.activeInHierarchy)
+ {
+ m_ContainerNormalHint.gameObject.SetActive(true);
+ }
+ m_ContainerNormalHint.DoWaitRestart();
+ }
+
+ private void OnHintDisplayComplete(Component com)
+ {
+ com.DoWaitStop();
+ com.gameObject.SetActive(false);
+ }
+
+ void CheckServerHint()
+ {
+ if (!m_ServerTipPrepared)
{
return;
}
- transform.SetAsLastSibling();
- var _hint = ServerTipDetails.RequireServerTip();
- if (_hint != null)
+ var hint = ServerTipDetails.RequireServerTip();
+ if (hint != null && gameObject.activeInHierarchy)
{
- serverTipPrepared = false;
- if (!m_ServerTipScaleTween.gameObject.activeSelf)
- {
- m_ServerTipScaleTween.gameObject.SetActive(true);
- }
- m_ServerTipScaleTween.SetStartState();
- m_ServerTipPositionTween.SetStartState();
- m_ContainerServerTip.gameObject.SetActive(true);
- m_ServerTip.SetExtenalData(_hint.extentionData);
- m_ServerTip.text = _hint.message;
- m_ServerTipScaleTween.Play();
- TimeMgr.Instance.Register(m_ServerTip, ServerTipStartHide, m_ServerTipKeepTime + m_ServerTipScaleTween.duration);
+ DisplayServerHint(hint);
}
else
{
DisableServerTip();
}
}
+
+ public void DisplayServerHint(SystemHintData hint)
+ {
+ transform.SetAsLastSibling();
+ m_ServerTipPrepared = false;
+ if (!m_ServerTipScaleTween.gameObject.activeSelf)
+ {
+ m_ServerTipScaleTween.gameObject.SetActive(true);
+ }
+ m_ServerTipScaleTween.SetStartState();
+ m_ServerTipPositionTween.SetStartState();
+ m_ContainerServerTip.gameObject.SetActive(true);
+ m_ServerTip.SetExtenalData(hint.extentionData);
+ m_ServerTip.text = hint.message;
+ m_ServerTipScaleTween.Play();
+ TimeMgr.Instance.Register(m_ServerTip, ServerTipStartHide, m_ServerTipKeepTime + m_ServerTipScaleTween.duration);
+ }
+
private void ServerTipStartHide(Component comp)
{
m_ServerTipPositionTween.Play();
@@ -128,9 +165,9 @@
private void ServerTipTweenComplete(Component comp)
{
- serverTipPrepared = true;
+ m_ServerTipPrepared = true;
DisableServerTip();
- ShowServerTip();
+ CheckServerHint();
}
private void DisableServerTip()
@@ -144,37 +181,32 @@
#region GM
- private const int MAX_GM = 300;
- private List<string> gmList = new List<string>();
- public readonly Regex autoPopRegex = new Regex("鍙傛暟閿欒|鎵цGM鍛戒护閿欒|^###");
- public void RevGMMsg(string msg)
+ readonly Regex autoPopRegex = new Regex("鍙傛暟閿欒|鎵цGM鍛戒护閿欒|^###");
+ void DisplayGM(string latest)
{
- if (gmList.Count >= MAX_GM)
+ if (!string.IsNullOrEmpty(latest))
{
- gmList.RemoveAt(0);
+ if (m_AutoPopToggle.isOn && hasOnFrom)
+ {
+ RectTransform rt = m_ContainerGM;
+ Vector3 pos = new Vector3(hasOnFrom ? -rt.sizeDelta.x / 2 : rt.sizeDelta.x / 2, 0, 0);
+ rt.DOLocalMove(pos, 1.0f);
+ hasOnFrom = !hasOnFrom;
+ m_GMClose.gameObject.SetActive(!hasOnFrom);
+ }
}
- msg.Replace("###", string.Empty);
- gmList.Add(msg);
- if (gmToggle.isOn && hasOnFrom)
+ if (m_ScrollControl.GetNumberOfCells(m_ScrollControl.m_Scorller) >= 300)
{
- RectTransform rt = gmPanel.transform as RectTransform;
- Vector3 pos = new Vector3(hasOnFrom ? -rt.sizeDelta.x / 2 : rt.sizeDelta.x / 2, 0, 0);
- rt.DOLocalMove(pos, 1.0f);
- hasOnFrom = !hasOnFrom;
- gmClose.gameObject.SetActive(!hasOnFrom);
- }
- if (gmCtrl.GetNumberOfCells(gmCtrl.m_Scorller) >= MAX_GM)
- {
- gmCtrl.m_Scorller.RefreshActiveCellViews();
+ m_ScrollControl.m_Scorller.RefreshActiveCellViews();
return;
}
- gmCtrl.Refresh();
- for (int i = 0; i < gmList.Count; i++)
+ m_ScrollControl.Refresh();
+ for (int i = 0; i < ServerTipDetails.gmMessages.Count; i++)
{
- gmCtrl.AddCell(ScrollerDataType.Normal, i);
+ m_ScrollControl.AddCell(ScrollerDataType.Normal, i);
}
- gmCtrl.Restart();
- if (autoPopRegex.IsMatch(msg))
+ m_ScrollControl.Restart();
+ if (autoPopRegex.IsMatch(latest))
{
if (hasOnFrom)
{
@@ -185,10 +217,10 @@
private void OnRefreshGmCell(ScrollerDataType type, CellView cell)
{
- if (cell.index < gmList.Count)
+ if (cell.index < ServerTipDetails.gmMessages.Count)
{
Text text = cell.transform.Find("Text").GetComponent<Text>();
- text.text = gmList[cell.index];
+ text.text = ServerTipDetails.gmMessages[cell.index];
}
}
@@ -196,22 +228,18 @@
{
if (!hasOnFrom)
{
- RectTransform rt = gmPanel.transform as RectTransform;
+ RectTransform rt = m_ContainerGM;
Vector3 pos = new Vector3(hasOnFrom ? -rt.sizeDelta.x / 2 : rt.sizeDelta.x / 2, 0, 0);
rt.DOLocalMove(pos, 1.0f);
hasOnFrom = !hasOnFrom;
- gmClose.gameObject.SetActive(!hasOnFrom);
+ m_GMClose.gameObject.SetActive(!hasOnFrom);
}
}
#endregion
private void OnDisable()
{
- m_ContianerFixedTip0.gameObject.SetActive(false);
- for (int i = 0; i < m_ContianerFixedTips.Count; i++)
- {
- m_ContianerFixedTips[i].gameObject.SetActive(false);
- }
+ m_ContainerNormalHint.gameObject.SetActive(false);
DisableServerTip();
StopAllCoroutines();
}
@@ -221,50 +249,11 @@
private bool hasOnFrom = true;
public void OnGMOpen()
{
- RectTransform rt = gmPanel.transform as RectTransform;
+ RectTransform rt = m_ContainerGM;
Vector3 pos = new Vector3(hasOnFrom ? -rt.sizeDelta.x / 2 : rt.sizeDelta.x / 2, 0, 0);
rt.DOLocalMove(pos, 1.0f);
hasOnFrom = !hasOnFrom;
- gmClose.gameObject.SetActive(!hasOnFrom);
- }
-
- protected override void BindController()
- {
- }
- protected override void AddListeners()
- {
- m_ContianerFixedTip0.OnWaitCompelete(OnHideFixedTip);
- for (int i = 0; i < m_ContianerFixedTips.Count; i++)
- {
- m_ContianerFixedTips[i].OnWaitCompelete(OnHideFixedTip);
- m_FixedTipDisplays.Add(false);
- }
- gmCtrl.OnRefreshCell += OnRefreshGmCell;
- gmCtrl.lockType = EnhanceLockType.LockVerticalBottom;
- gmClose.onClick.AddListener(OnGMClose);
- }
-
- protected override void OnPreOpen()
- {
-#if UNITY_EDITOR
- gmPanel.SetActive(VersionConfig.Get().debugVersion);
-#else
- gmPanel.SetActive(false);
-#endif
- serverTipPrepared = true;
- }
-
- protected override void OnAfterOpen()
- {
- }
-
- protected override void OnPreClose()
- {
- }
-
- protected override void OnAfterClose()
- {
- _inst = null;
+ m_GMClose.gameObject.SetActive(!hasOnFrom);
}
}
}
--
Gitblit v1.8.0