| //-------------------------------------------------------- | 
| //    [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; | 
|         } | 
|     } |