//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, July 24, 2018
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI {
|
|
public class ChatFloatWin : Window
|
{
|
[SerializeField] RectTransform m_ContainerFloat;
|
[SerializeField] RichText m_Chat;
|
|
DateTime overdueTime;
|
|
ChatCenter chatCenter
|
{
|
get
|
{
|
return ModelCenter.Instance.GetModel<ChatCenter>();
|
}
|
}
|
|
#region Built-in
|
protected override void BindController()
|
{
|
|
}
|
|
protected override void AddListeners()
|
{
|
}
|
|
protected override void OnPreOpen()
|
{
|
m_ContainerFloat.SetActive(false);
|
ChatCtrl.Inst.chatFloatUpdate += ChatFloatUpdate;
|
WindowCenter.Instance.windowAfterOpenEvent += WindowAfterOpenEvent;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
ChatCtrl.Inst.chatFloatUpdate -= ChatFloatUpdate;
|
WindowCenter.Instance.windowAfterOpenEvent -= WindowAfterOpenEvent;
|
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
#endregion
|
|
protected override void LateUpdate()
|
{
|
base.LateUpdate();
|
if (DateTime.Now > overdueTime && m_ContainerFloat.gameObject.activeSelf)
|
{
|
m_ContainerFloat.SetActive(false);
|
}
|
}
|
|
void WindowAfterOpenEvent(Window window)
|
{
|
if (window is MainInterfaceWin || 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;
|
}
|
}
|
|
}
|
|
|
|
|