From 4588e1bfdf4ff1d6523296a71a9e84448e7a2277 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期一, 22 十二月 2025 18:10:58 +0800
Subject: [PATCH] 76 聊天系统-客户端
---
Main/System/Chat/ChatManager.cs | 16 ++++++++++++++--
Main/System/Main/HomeWin.cs | 21 +++++++++++++++++++++
Main/System/Guild/GuildBaseWin.cs | 22 +++++++++++++++++++---
3 files changed, 54 insertions(+), 5 deletions(-)
diff --git a/Main/System/Chat/ChatManager.cs b/Main/System/Chat/ChatManager.cs
index ff4ef80..6630b36 100644
--- a/Main/System/Chat/ChatManager.cs
+++ b/Main/System/Chat/ChatManager.cs
@@ -93,13 +93,21 @@
GuildManager.Instance.EnterOrQuitGuildEvent -= EnterOrQuitGuildEvent;
}
- //琚涪鍑�/閫�鍑哄伐浼氭椂锛屽垏鎹㈣亰澶╅閬�
+ //琚涪鍑�/閫�鍑哄伐浼氭椂锛屽垏鎹㈣亰澶╅閬�,娓呯悊缂撳瓨鐨勬棫鍏細淇℃伅
private void EnterOrQuitGuildEvent(bool obj)
{
if (!obj)
{
nowChatChannel = ChatChannel.World;
nowChatTab = ChatTab.World;
+ if (talkDict.ContainsKey(ChatChannel.Guild))
+ {
+ talkDict[ChatChannel.Guild].Clear();
+ }
+ if (lastTalkDataDict.ContainsKey(ChatChannel.Guild))
+ {
+ lastTalkDataDict.Remove(ChatChannel.Guild);
+ }
}
}
@@ -377,7 +385,11 @@
if (!lastTalkDataDict.ContainsKey(type) || lastTalkDataDict[type].TalkTime <= data.TalkTime)
{
- lastTalkDataDict[type] = data;
+ //灞曠ず鐨勬秷鎭笉鑳芥槸鏃ユ湡琛屽拰绯荤粺琛�
+ if (!data.isDate && !data.isSystem)
+ {
+ lastTalkDataDict[type] = data;
+ }
}
if (isSendBullet)
diff --git a/Main/System/Guild/GuildBaseWin.cs b/Main/System/Guild/GuildBaseWin.cs
index 38dcfa4..da9c7ed 100644
--- a/Main/System/Guild/GuildBaseWin.cs
+++ b/Main/System/Guild/GuildBaseWin.cs
@@ -247,6 +247,7 @@
}
}
+ List<TalkData> showTalkDatas = new List<TalkData>();
void ShowTalkInfo()
{
if (!ChatManager.Instance.TryGetTalkData(ChatChannel.Guild, out List<TalkData> datas) || datas.IsNullOrEmpty())
@@ -254,15 +255,30 @@
talkInfoText.text = string.Empty;
return;
}
+ showTalkDatas.Clear();
- StringBuilder stringBuilder = new StringBuilder();
- int startIndex = Mathf.Max(datas.Count - 2, 0);
- for (int i = startIndex; i < datas.Count; i++)
+ // 浠庡悗鍚戝墠閬嶅巻锛屾壘鍒版渶鍚庝袱鏉$帺瀹舵秷鎭紙杩囨护鎺夌郴缁熸秷鎭拰鏃ユ湡娑堟伅锛�
+ int count = 0;
+ for (int i = datas.Count - 1; i >= 0 && count < 2; i--)
{
TalkData data = datas[i];
+ // 鍙繚鐣欑帺瀹舵秷鎭細闈炵郴缁熸秷鎭笖闈炴棩鏈熸秷鎭�
+ if (!data.isSystem && !data.isDate)
+ {
+ showTalkDatas.Insert(0, data); // 鎻掑叆鍒板垪琛ㄥ紑澶翠互淇濇寔鏃堕棿椤哄簭
+ count++;
+ }
+ }
+
+ StringBuilder stringBuilder = new StringBuilder();
+ for (int i = 0; i < showTalkDatas.Count; i++)
+ {
+ TalkData data = showTalkDatas[i];
stringBuilder.Append(UIHelper.AppendColor(GetGuildChatAreaColor(data), GetGuildChatAreaContent(data)));
stringBuilder.AppendLine();
}
+
talkInfoText.text = stringBuilder.ToString();
}
+
}
\ No newline at end of file
diff --git a/Main/System/Main/HomeWin.cs b/Main/System/Main/HomeWin.cs
index 29d8277..78e80dc 100644
--- a/Main/System/Main/HomeWin.cs
+++ b/Main/System/Main/HomeWin.cs
@@ -318,6 +318,27 @@
// transChatInfo.SetActive(false);
// UpdateChat(ChatManager.Instance.nowChatTab);
+ bool hasLastTalkData = ChatManager.Instance.TryGetLastTalkData(out ChatChannel type, out TalkData data);
+ if (!hasLastTalkData)
+ {
+ ChatManager.Instance.nowChatTab = ChatTab.World;
+ ChatManager.Instance.nowChatChannel = ChatChannel.World;
+ }
+ else
+ {
+ switch (type)
+ {
+ case ChatChannel.World:
+ default:
+ ChatManager.Instance.nowChatTab = ChatTab.World;
+ ChatManager.Instance.nowChatChannel = ChatChannel.World;
+ break;
+ case ChatChannel.Guild:
+ ChatManager.Instance.nowChatTab = ChatTab.Guild;
+ ChatManager.Instance.nowChatChannel = ChatChannel.Guild;
+ break;
+ }
+ }
UIManager.Instance.OpenWindow<ChatWin>();
}
--
Gitblit v1.8.0