Files
JJBB/Assets/Project/Script/GUI/Chat/ChatInfoLogItemInFrame.cs
2024-08-23 15:49:34 +08:00

165 lines
5.8 KiB
C#

using UnityEngine;
using UnityEngine.UI;
using System;
using System.Collections;
using System.Collections.Generic;
using Games.ChatHistory;
using GCGame.Table;
using Games.GlobeDefine;
using GCGame;
using Module.Log;
using Games.Item;
public class ChatInfoLogItemInFrame : ChatInfoLogItem
{
public Image _ChatVoiceImg;
public string _CannelTitle;
private string non_breaking_space = "\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0";
public const string _ReplaceChannelStr = "<color=#00000000><quad material=0 size= x=0.1 y=0.1 width={0} height={1} /></color>";
public override float GetItemHeight()
{
return _ChatInfo.preferredHeight + 5;
}
void OnDisable()
{
//ClearChat();
}
protected override bool SetDetailLog()
{
_ModifiedStr = "";
_ChatVoiceImg.gameObject.SetActive(false);
bool isSystemInfo = false;
var cannleSprite = GetCannelStr(_ChatHistory.EChannel);
if (string.IsNullOrEmpty(cannleSprite))
{
_CannelIcon.gameObject.SetActive(false);
}
else
{
_CannelIcon.gameObject.SetActive(true);
LoadAssetBundle.Instance.SetImageSprite(_CannelIcon, cannleSprite);
}
ClearChat();
string vipIconStr = "";
if (GlobeVar.IsGUIDValid(_ChatHistory.SenderGuid) && !_ChatHistory.IsSystem)
{
string vipPrivilegeIcon = Utils.GetPrivilegeVipIcon(_ChatHistory.SenderPrivilegeVIP);
string vipIcon = Utils.GetVipIcon(_ChatHistory.SenderVIPLevel);
if (!string.IsNullOrEmpty(vipPrivilegeIcon))
{
vipIconStr += ChatLinkImage.GetLinkImageStr(vipPrivilegeIcon, 24, 24);
}
if (!string.IsNullOrEmpty(vipIcon))
{
vipIconStr += ChatLinkImage.GetLinkImageStr(vipIcon, 24, 24);
}
}
_ModifiedStr += non_breaking_space;
if (_ChatHistory.EChannel != GC_CHAT.CHATTYPE.CHAT_TYPE_BATTLE
&& _ChatHistory.EChannel != GC_CHAT.CHATTYPE.CHAT_TYPE_SYSTEM)
_ModifiedStr += vipIconStr;
InsertCannelSpace();
_ModifiedStr += GetSenderNameLink(_ChatHistory);
if (_ChatHistory.ChatInfo.StartsWith(ChatVoiceInputLogic._VoiceChatStart))
{
//_ChatHistory.ChatInfo = _ChatHistory.ChatInfo;
GetAllChatLinks(_ChatHistory);
//_ModifiedStr = GetLinkedStr(_ChatHistory) + StrDictionary.GetClientDictionaryString("#{4931}");
var voiceInfo = ChatVoiceInfo.GetVoiceInfo(_ChatHistory.ChatInfo);
if (voiceInfo == null)
{
_ModifiedStr = GetLinkedStr(_ChatHistory) + StrDictionary.GetClientDictionaryString("#{4931}");
}
else
{
_ModifiedStr = GetLinkedStr(_ChatHistory) + voiceInfo.text;
}
_ChatInfo.text = _ModifiedStr;
_ChatVoiceImg.gameObject.SetActive(false);
_ChatVoiceImg.rectTransform.anchoredPosition = new Vector2(_ModifiedStr.Length * 25, 0);
StartCoroutine(WaitLayout());
return true;
}
if (_ChatHistory.EChannel == GC_CHAT.CHATTYPE.CHAT_TYPE_SYSTEM) //只要是系统信息都要显示
{
isSystemInfo = true;
}
if ((_ChatHistory.EChannel == GC_CHAT.CHATTYPE.CHAT_TYPE_LOUDSPEAKER
|| _ChatHistory.EChannel == GC_CHAT.CHATTYPE.CHAT_TYPE_ALLSERSPEAKER
|| _ChatHistory.EChannel == GC_CHAT.CHATTYPE.CHAT_TYPE_CROSSSERSPEAKER) && _ChatHistory.ChatInfo[0] == '#')
{
_ModifiedStr += StrDictionary.GetServerDictionaryFormatString(_ChatHistory.ChatInfo);
}
if ((_ChatHistory.EChannel == GC_CHAT.CHATTYPE.CHAT_TYPE_SYSTEM || _ChatHistory.EChannel == GC_CHAT.CHATTYPE.CHAT_TYPE_WORLD) && _ChatHistory.ChatInfo.StartsWith("#{"))
{
_ModifiedStr += StrDictionary.GetServerDictionaryFormatString(_ChatHistory.ChatInfo);
}
else if (_ChatHistory.EChannel == GC_CHAT.CHATTYPE.CHAT_TYPE_GUILD && _ChatHistory.SenderGuid == GlobeVar.INVALID_GUID && _ChatHistory.ChatInfo.StartsWith("#{"))
{
_ModifiedStr = non_breaking_space + StrDictionary.GetServerDictionaryFormatString(_ChatHistory.ChatInfo);
}
else
{
_ModifiedStr += _ChatHistory.ChatInfo;
}
GetAllChatLinks(_ChatHistory);
_ModifiedStr = GetLinkedStr(_ChatHistory);
_ChatInfo.text = _ModifiedStr;
if (isSystemInfo)
{
isSystemInfo = false;
if (PopNoticeLogic.Instance && PopNoticeLogic.Instance.isActiveAndEnabled)
{
PopNoticeLogic.Instance.PopStringInfo(_ModifiedStr.Substring(non_breaking_space.Length));
}
else
{
GlobalData.PopNoticeList.Add(_ModifiedStr.Substring(non_breaking_space.Length));
UIManager.ShowUI(UIInfo.PopNotice, delegate (bool bSucess, object param)
{
if (bSucess)
{
for (int index = 0; index < GlobalData.PopNoticeList.Count; index++)
{
PopNoticeLogic.Instance.PopStringInfo(GlobalData.PopNoticeList[index]);
}
GlobalData.PopNoticeList.Clear();
}
});
}
_ModifiedStr = "";
}
_ChatInfo.CalculateLayoutInputHorizontal();
_ChatInfo.CalculateLayoutInputVertical();
StartCoroutine(WaitLayout());
return true;
}
private void InsertCannelSpace()
{
string spaceEmotionItem = "";//string.Format(_ReplaceChannelStr, 1.5f, 0.5f);
_ModifiedStr = spaceEmotionItem + _ModifiedStr;
}
}