//-------------------------------------------------------- 
 | 
//    [Author]:           玩个游戏 
 | 
//    [  Date ]:           Tuesday, July 24, 2018 
 | 
//-------------------------------------------------------- 
 | 
  
 | 
using System; 
 | 
using System.Collections; 
 | 
using System.Collections.Generic; 
 | 
using UnityEngine; 
 | 
using UnityEngine.UI; 
 | 
  
 | 
  
 | 
    public class ChatFloatWin : UIBase 
 | 
    { 
 | 
        [SerializeField] RectTransform m_ContainerFloat; 
 | 
        [SerializeField] RichText m_Chat; 
 | 
  
 | 
        DateTime overdueTime; 
 | 
  
 | 
        ChatCenter chatCenter 
 | 
        { 
 | 
            get 
 | 
            { 
 | 
                return ChatCenter.Instance; 
 | 
            } 
 | 
        } 
 | 
  
 | 
  
 | 
        protected override void OnPreOpen() 
 | 
        { 
 | 
            base.OnPreOpen(); 
 | 
            m_ContainerFloat.SetActive(false); 
 | 
            ChatManager.Instance.chatFloatUpdate += ChatFloatUpdate; 
 | 
            UIManager.Instance.OnOpenWindow += OnOpenWindow; 
 | 
        } 
 | 
  
 | 
        protected override void OnOpen() 
 | 
        { 
 | 
            base.OnOpen(); 
 | 
        } 
 | 
  
 | 
        protected override void OnPreClose() 
 | 
        { 
 | 
            ChatManager.Instance.chatFloatUpdate -= ChatFloatUpdate; 
 | 
            UIManager.Instance.OnOpenWindow -= OnOpenWindow; 
 | 
  
 | 
        } 
 | 
  
 | 
        protected override void OnClose() 
 | 
        { 
 | 
            base.OnClose(); 
 | 
        } 
 | 
  
 | 
        protected void LateUpdate() 
 | 
        { 
 | 
            if (DateTime.Now > overdueTime && m_ContainerFloat.gameObject.activeSelf) 
 | 
            { 
 | 
                m_ContainerFloat.SetActive(false); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        void OnOpenWindow(UIBase window) 
 | 
        { 
 | 
            if (window is MainWin || window is LoadingWin/* || window is TreasureBaseWin*/) 
 | 
            { 
 | 
                m_ContainerFloat.SetActive(false); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        private void ChatFloatUpdate(ChatData data) 
 | 
        { 
 | 
            if (!chatCenter.IsShowChatFloat()) 
 | 
            { 
 | 
                return; 
 | 
            } 
 | 
  
 | 
  
 | 
            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: 
 | 
                case ChatInfoType.default2: 
 | 
                    return; 
 | 
            } 
 | 
            m_ContainerFloat.SetActive(true); 
 | 
            m_Chat.text = string.Empty; 
 | 
            overdueTime = DateTime.Now.AddTicks(3 * TimeSpan.TicksPerSecond); 
 | 
            if (data.infoList != null) 
 | 
            { 
 | 
                m_Chat.SetExtenalData(data.infoList); 
 | 
            } 
 | 
            Co_SetText(StringUtility.Contact(SetChatExtraInfo(data), data.content)); 
 | 
        } 
 | 
  
 | 
        void Co_SetText(string value) 
 | 
        { 
 | 
            m_Chat.text = value; 
 | 
            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.CrossServer: 
 | 
                    return string.Format("<Img chat={0}/> <color=#109d06>{1}</color>: ", "ChatIcon_CrossServer", (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"); 
 | 
                case ChatInfoType.default1: 
 | 
                    return string.Format("<Img chat={0}/> <color=#109d06>{1}</color>: ", "ChatIcon_default1", (data as ChatUeseData).name); 
 | 
            } 
 | 
            return string.Empty; 
 | 
        } 
 | 
    } 
 |