//-------------------------------------------------------- // [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(" {1}: ", "ChatIcon_World", (data as ChatUeseData).name); } case ChatInfoType.Area: return string.Format(" {1}: ", "ChatIcon_Area", (data as ChatUeseData).name); case ChatInfoType.CrossServer: return string.Format(" {1}: ", "ChatIcon_CrossServer", (data as ChatUeseData).name); case ChatInfoType.Team: { string playerName = (data as ChatUeseData).name; return string.Format(" {1}", "ChatIcon_Team", playerName + (playerName != string.Empty ? ": " : string.Empty)); } case ChatInfoType.Friend: break; case ChatInfoType.Fairy: { string playerName = (data as ChatUeseData).name; return string.Format(" {1}", "ChatIcon_Fairy", playerName + (playerName != string.Empty ? ": " : string.Empty)); } // case ChatInfoType.Trumpet: // return string.Format(" {1}: ", "ChatIcon_Trumpet", (data as ChatTrumpetData).name); case ChatInfoType.Invite: return string.Format(" ", "ChatIcon_Invite"); case ChatInfoType.System: return string.Format(" ", "ChatIcon_System"); case ChatInfoType.default1: return string.Format(" {1}: ", "ChatIcon_default1", (data as ChatUeseData).name); } return string.Empty; } }