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