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