// using System.Collections; // using System.Collections.Generic; // using UnityEngine; // using UnityEngine.UI; // using CJ.Wait; // using System; // using System.Text.RegularExpressions; // using DG.Tweening; // namespace vnxbqy.UI // { // public class MessageWin : Window // { // [SerializeField] RectTransform m_ContainerNormalHint; // [SerializeField] RichText m_NormalHint; // [SerializeField] RectTransform m_ContainerChatHint; // [SerializeField] RichText m_NormalChatHint; //显示在聊天界面的位置 // [SerializeField] RectTransform m_ContainerServerTip; // [SerializeField] ScaleTween m_ServerTipScaleTween; // [SerializeField] PositionTween m_ServerTipPositionTween; // [SerializeField] RichText m_ServerTip; // [SerializeField, Header("全服广播停留时间")] float m_ServerTipKeepTime = 1.5f; // [SerializeField] RectTransform m_ContainerGM; // [SerializeField] Text m_GmRichText; // [SerializeField] ScrollerController m_ScrollControl; // [SerializeField] Toggle m_AutoPopToggle; // [SerializeField] Toggle m_AutoRefreshToggle; // [SerializeField] Button m_GMClose; // bool m_ServerTipPrepared = true; // protected override void BindController() // { // } // protected override void AddListeners() // { // m_ContainerNormalHint.OnWaitCompelete(OnHintDisplayComplete); // m_ContainerChatHint.OnWaitCompelete(OnHintDisplayComplete); // m_ScrollControl.OnRefreshCell += OnRefreshGmCell; // m_ScrollControl.OnGetDynamicSize += OnGetDynamicSize; // m_ScrollControl.lockType = EnhanceLockType.LockVerticalBottom; // m_GMClose.onClick.AddListener(OnGMClose); // } // protected override void OnPreOpen() // { // m_ServerTipPrepared = true; // #if UNITY_EDITOR // m_ContainerGM.SetActive(VersionConfig.Get().debugVersion); // #else // m_ContainerGM.SetActive(false); // #endif // ServerTipDetails.normalHintRefresh += CheckNormalHint; // ServerTipDetails.serverHintRefresh += CheckServerHint; // ServerTipDetails.gmMessageRefresh += DisplayGM; // ServerTipDetails.gmOpenEvent += GmOpenEvent; // ServerTipDetails.chatHintRefresh += CheckChatHint; // CheckNormalHint(); // CheckChatHint(); // 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; // ServerTipDetails.chatHintRefresh -= CheckChatHint; // } // protected override void OnAfterClose() // { // } // private void GmOpenEvent() // { // if (ServerTipDetails.requireOpenGM) // { // 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.SetActive(true); // } // m_ContainerNormalHint.DoWaitRestart(); // } // private void OnHintDisplayComplete(Component com) // { // com.DoWaitStop(); // com.SetActive(false); // } // void CheckServerHint() // { // if (!m_ServerTipPrepared) // { // return; // } // var hint = ServerTipDetails.RequireServerTip(); // if (hint != null && gameObject.activeInHierarchy) // { // DisplayServerHint(hint); // } // else // { // DisableServerTip(); // } // } // public void DisplayServerHint(SystemHintData hint) // { // transform.SetAsLastSibling(); // m_ServerTipPrepared = false; // if (!m_ServerTipScaleTween.gameObject.activeSelf) // { // m_ServerTipScaleTween.SetActive(true); // } // m_ServerTipScaleTween.SetStartState(); // m_ServerTipPositionTween.SetStartState(); // m_ContainerServerTip.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(); // TimeMgr.Instance.Register(m_ServerTipPositionTween, ServerTipTweenComplete, m_ServerTipPositionTween.duration); // } // private void ServerTipTweenComplete(Component comp) // { // m_ServerTipPrepared = true; // DisableServerTip(); // CheckServerHint(); // } // private void DisableServerTip() // { // TimeMgr.Instance.UnRegister(m_ServerTip); // TimeMgr.Instance.UnRegister(m_ServerTipPositionTween); // m_ContainerServerTip.SetActive(false); // m_ServerTipScaleTween.Stop(); // m_ServerTipPositionTween.Stop(); // m_ServerTipScaleTween.SetStartState(); // m_ServerTipPositionTween.SetStartState(); // } // #region GM // readonly Regex autoPopRegex = new Regex("参数错误|执行GM命令错误|^###"); // void DisplayGM(string latest) // { // if (!string.IsNullOrEmpty(latest)) // { // 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.SetActive(!hasOnFrom); // } // } // if (m_ScrollControl.GetNumberOfCells(m_ScrollControl.m_Scorller) >= 300) // { // m_ScrollControl.m_Scorller.RefreshActiveCellViews(); // return; // } // m_ScrollControl.Refresh(); // for (int i = 0; i < ServerTipDetails.gmMessages.Count; i++) // { // m_ScrollControl.AddCell(ScrollerDataType.Normal, i); // } // m_ScrollControl.Restart(); // if (autoPopRegex.IsMatch(latest)) // { // if (hasOnFrom) // { // OnGMOpen(); // } // } // } // private void OnRefreshGmCell(ScrollerDataType type, CellView cell) // { // if (cell.index < ServerTipDetails.gmMessages.Count) // { // Text text = cell.transform.Find("Text").GetComponent(); // text.text = ServerTipDetails.gmMessages[cell.index]; // } // } // private bool OnGetDynamicSize(ScrollerDataType type, int index, out float height) // { // var msg = index < ServerTipDetails.gmMessages.Count ? ServerTipDetails.gmMessages[index] : string.Empty; // height = m_GmRichText.cachedTextGeneratorForLayout.GetPreferredHeight(msg, // m_GmRichText.GetGenerationSettings(new Vector2(m_GmRichText.rectTransform.rect.size.x, 0.0f))) // / m_GmRichText.pixelsPerUnit; // height += 5; // return true; // } // private void OnGMClose() // { // if (!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.SetActive(!hasOnFrom); // } // } // #endregion // private void OnDisable() // { // m_ContainerNormalHint.SetActive(false); // m_ContainerChatHint.SetActive(false); // DisableServerTip(); // StopAllCoroutines(); // } // private Vector3 gmTo = new Vector3(442, 0, 0); // private Vector3 gmFrom = new Vector3(892, 0, 0); // private bool hasOnFrom = true; // public void OnGMOpen() // { // 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.SetActive(!hasOnFrom); // } // void CheckChatHint() // { // var hint = ServerTipDetails.RequireChatHint(); // if (hint != null) // { // DisplayChatHint(hint); // } // } // void DisplayChatHint(SystemHintData hint) // { // if (!WindowCenter.Instance.IsOpen()) // { // return; // } // if (!m_ContainerChatHint.gameObject.activeInHierarchy) // { // m_ContainerChatHint.gameObject.SetActive(true); // } // m_NormalChatHint.SetExtenalData(hint.extentionData); // m_NormalChatHint.text = hint.message; // m_ContainerChatHint.DoWaitRestart(); // } // } // }