| Main/System/Chat/ChatManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/Guild/GuildBaseWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Main/System/Main/HomeWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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) 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(); } } 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>(); }