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