少年修仙传客户端代码仓库
client_linchunjie
2018-08-27 d106f11e7f44c748f595da36e0cdfd54849649e6
System/Chat/ChatFloatWin.cs
@@ -1,153 +1,153 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, July 24, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI {
    public class ChatFloatWin : Window
    {
        [SerializeField] RectTransform m_ContainerFloat;
        [SerializeField] RichText m_Chat;
        [SerializeField] CanvasGroup canvasGroup;
        DateTime overdueTime = DateTime.Now;
        Coroutine cacheCoroutine;
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
            m_ContainerFloat.gameObject.SetActive(false);
            ChatCtrl.Inst.chatFloatUpdate += ChatFloatUpdate;
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            ChatCtrl.Inst.chatFloatUpdate -= ChatFloatUpdate;
            if (cacheCoroutine != null)
            {
                StopCoroutine(cacheCoroutine);
                cacheCoroutine = null;
            }
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        protected override void LateUpdate()
        {
            base.LateUpdate();
            if (DateTime.Now > overdueTime && m_ContainerFloat.gameObject.activeSelf)
            {
                m_ContainerFloat.gameObject.SetActive(false);
            }
        }
        private void ChatFloatUpdate(ChatData data)
        {
            if (cacheCoroutine != null)
            {
                StopCoroutine(cacheCoroutine);
                cacheCoroutine = null;
            }
            if (data == null)
            {
                return;
            }
            if (string.IsNullOrEmpty(data.content))
            {
                return;
            }
            switch (data.type)
            {
                case ChatInfoType.Friend:
                case ChatInfoType.FairyQuestion:
                case ChatInfoType.FairyTip:
                case ChatInfoType.TeamTip:
                    return;
            }
            m_ContainerFloat.gameObject.SetActive(true);
            canvasGroup.alpha = 0;
            m_Chat.text = string.Empty;
            overdueTime = DateTime.Now.AddTicks(3 * TimeSpan.TicksPerSecond);
            if (data.infoList != null)
            {
                m_Chat.SetExtenalData(data.infoList);
            }
            cacheCoroutine = StartCoroutine(Co_SetText(StringUtility.Contact(SetChatExtraInfo(data), data.content)));
        }
        IEnumerator Co_SetText(string value)
        {
            yield return null;
            m_Chat.text = value;
            canvasGroup.alpha = 1;
            if (m_Chat.preferredWidth >= 1000)
            {
                m_Chat.alignment = TextAnchor.MiddleLeft;
            }
            else
            {
                m_Chat.alignment = TextAnchor.MiddleCenter;
            }
        }
        string SetChatExtraInfo(ChatData data)
        {
            switch (data.type)
            {
                case ChatInfoType.World:
                    {
                        return string.Format("<Img chat={0}/> <color=#109d06>{1}</color>: ", "ChatIcon_World", (data as ChatUeseData).name);
                    }
                case ChatInfoType.Area:
                    return string.Format("<Img chat={0}/> <color=#109d06>{1}</color>: ", "ChatIcon_Area", (data as ChatUeseData).name);
                case ChatInfoType.Team:
                    {
                        string playerName = (data as ChatUeseData).name;
                        return string.Format("<Img chat={0}/> <color=#109d06>{1}</color>", "ChatIcon_Team", playerName + (playerName != string.Empty ? ": " : string.Empty));
                    }
                case ChatInfoType.Friend:
                    break;
                case ChatInfoType.Fairy:
                    {
                        string playerName = (data as ChatUeseData).name;
                        return string.Format("<Img chat={0}/> <color=#109d06>{1}</color>", "ChatIcon_Fairy", playerName + (playerName != string.Empty ? ": " : string.Empty));
                    }
                case ChatInfoType.Trumpet:
                    return string.Format("<Img chat={0}/> <color=#109d06>{1}</color>: ", "ChatIcon_Trumpet", (data as ChatTrumpetData).name);
                case ChatInfoType.Invite:
                    return string.Format("<Img chat={0}/> ", "ChatIcon_Invite");
                case ChatInfoType.System:
                    return string.Format("<Img chat={0}/> ", "ChatIcon_System");
            }
            return string.Empty;
        }
    }
}
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, July 24, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI {
    public class ChatFloatWin : Window
    {
        [SerializeField] RectTransform m_ContainerFloat;
        [SerializeField] RichText m_Chat;
        [SerializeField] CanvasGroup canvasGroup;
        DateTime overdueTime = DateTime.Now;
        Coroutine cacheCoroutine;
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
            m_ContainerFloat.gameObject.SetActive(false);
            ChatCtrl.Inst.chatFloatUpdate += ChatFloatUpdate;
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            ChatCtrl.Inst.chatFloatUpdate -= ChatFloatUpdate;
            if (cacheCoroutine != null)
            {
                StopCoroutine(cacheCoroutine);
                cacheCoroutine = null;
            }
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        protected override void LateUpdate()
        {
            base.LateUpdate();
            if (DateTime.Now > overdueTime && m_ContainerFloat.gameObject.activeSelf)
            {
                m_ContainerFloat.gameObject.SetActive(false);
            }
        }
        private void ChatFloatUpdate(ChatData data)
        {
            if (cacheCoroutine != null)
            {
                StopCoroutine(cacheCoroutine);
                cacheCoroutine = null;
            }
            if (data == null)
            {
                return;
            }
            if (string.IsNullOrEmpty(data.content))
            {
                return;
            }
            switch (data.type)
            {
                case ChatInfoType.Friend:
                case ChatInfoType.FairyQuestion:
                case ChatInfoType.FairyTip:
                case ChatInfoType.TeamTip:
                    return;
            }
            m_ContainerFloat.gameObject.SetActive(true);
            canvasGroup.alpha = 0;
            m_Chat.text = string.Empty;
            overdueTime = DateTime.Now.AddTicks(3 * TimeSpan.TicksPerSecond);
            if (data.infoList != null)
            {
                m_Chat.SetExtenalData(data.infoList);
            }
            cacheCoroutine = StartCoroutine(Co_SetText(StringUtility.Contact(SetChatExtraInfo(data), data.content)));
        }
        IEnumerator Co_SetText(string value)
        {
            yield return null;
            m_Chat.text = value;
            canvasGroup.alpha = 1;
            if (m_Chat.preferredWidth >= 1000)
            {
                m_Chat.alignment = TextAnchor.MiddleLeft;
            }
            else
            {
                m_Chat.alignment = TextAnchor.MiddleCenter;
            }
        }
        string SetChatExtraInfo(ChatData data)
        {
            switch (data.type)
            {
                case ChatInfoType.World:
                    {
                        return string.Format("<Img chat={0}/> <color=#109d06>{1}</color>: ", "ChatIcon_World", (data as ChatUeseData).name);
                    }
                case ChatInfoType.Area:
                    return string.Format("<Img chat={0}/> <color=#109d06>{1}</color>: ", "ChatIcon_Area", (data as ChatUeseData).name);
                case ChatInfoType.Team:
                    {
                        string playerName = (data as ChatUeseData).name;
                        return string.Format("<Img chat={0}/> <color=#109d06>{1}</color>", "ChatIcon_Team", playerName + (playerName != string.Empty ? ": " : string.Empty));
                    }
                case ChatInfoType.Friend:
                    break;
                case ChatInfoType.Fairy:
                    {
                        string playerName = (data as ChatUeseData).name;
                        return string.Format("<Img chat={0}/> <color=#109d06>{1}</color>", "ChatIcon_Fairy", playerName + (playerName != string.Empty ? ": " : string.Empty));
                    }
                case ChatInfoType.Trumpet:
                    return string.Format("<Img chat={0}/> <color=#109d06>{1}</color>: ", "ChatIcon_Trumpet", (data as ChatTrumpetData).name);
                case ChatInfoType.Invite:
                    return string.Format("<Img chat={0}/> ", "ChatIcon_Invite");
                case ChatInfoType.System:
                    return string.Format("<Img chat={0}/> ", "ChatIcon_System");
            }
            return string.Empty;
        }
    }
}