From c22bdd2562585c87d3fcfadcf94a4277b119a85c Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期日, 14 十二月 2025 19:52:44 +0800
Subject: [PATCH] 76 【常规】聊天系统-客户端

---
 Main/System/Chat/ChatWin.cs |   27 +++++++++++++++++++++++----
 1 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/Main/System/Chat/ChatWin.cs b/Main/System/Chat/ChatWin.cs
index 1793fce..427087b 100644
--- a/Main/System/Chat/ChatWin.cs
+++ b/Main/System/Chat/ChatWin.cs
@@ -96,10 +96,12 @@
     protected override void OnPreOpen()
     {
         base.OnPreOpen();
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent;
         manager.OnChatTabChangeEvent += OnChatTabChange;
         manager.OnUpdateTalkEvent += OnUpdateTalkEvent;
         manager.OnUpdateTalkCacheListEvent += OnUpdateTalkCacheList;
         manager.OnDeleteTalkEvent += OnDeleteTalkEvent;
+        manager.OnUpdatePlayerInfoEvent += OnUpdatePlayerInfoEvent;
 
         scrChatTab.OnRefreshCell += OnRefreshChatTabCell;
         scrWorld.OnGetDynamicSize += OnGetWorldChatDynamicSize;
@@ -126,10 +128,12 @@
     protected override void OnPreClose()
     {
         base.OnPreClose();
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitializeEvent;
         manager.OnChatTabChangeEvent -= OnChatTabChange;
         manager.OnUpdateTalkEvent -= OnUpdateTalkEvent;
         manager.OnUpdateTalkCacheListEvent -= OnUpdateTalkCacheList;
         manager.OnDeleteTalkEvent -= OnDeleteTalkEvent;
+        manager.OnUpdatePlayerInfoEvent -= OnUpdatePlayerInfoEvent;
 
         scrChatTab.OnRefreshCell -= OnRefreshChatTabCell;
         scrWorld.OnGetDynamicSize -= OnGetWorldChatDynamicSize;
@@ -140,6 +144,16 @@
         scrGuild.mScrollRect.onValueChanged.RemoveListener(OnGuildScrollValChange);
         GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
         clickScreenOtherSpace.RemoveAllListeners();
+    }
+
+    private void OnBeforePlayerDataInitializeEvent()
+    {
+        CreaterAll(manager.nowChatTab);
+    }
+
+    private void OnUpdatePlayerInfoEvent()
+    {
+        RefreshAll(manager.nowChatChannel, isUpdatePlayerInfo: true);
     }
 
     private void OnDeleteTalkEvent(ChatChannel channel)
@@ -330,21 +344,21 @@
         return 0;
     }
 
-    private void RefreshAll(ChatChannel type, uint playerId = 0)
+    private void RefreshAll(ChatChannel type, uint playerId = 0, bool isUpdatePlayerInfo = false)
     {
         scrChatTab.m_Scorller.RefreshActiveCellViews();
         if (type == ChatChannel.World)
         {
-            RefreshChat(type, scrWorld, playerId);
+            RefreshChat(type, scrWorld, playerId, isUpdatePlayerInfo);
         }
         else if (type == ChatChannel.Guild)
         {
-            RefreshChat(type, scrGuild, playerId);
+            RefreshChat(type, scrGuild, playerId, isUpdatePlayerInfo);
         }
 
     }
 
-    private void RefreshChat(ChatChannel type, ScrollerController scroller, uint playerId = 0)
+    private void RefreshChat(ChatChannel type, ScrollerController scroller, uint playerId = 0, bool isUpdatePlayerInfo = false)
     {
         if (!manager.TryGetTalkData(type, out List<TalkData> datas) || datas == null)
             return;
@@ -361,6 +375,11 @@
                 float height = GetHeight(talkDataType, data.Content, data.InfoList);
                 scroller.m_Scorller.AddHeight(true, height);
                 //Debug.Log($"ChatWin AddCell i {i} AddHeight {height}");
+
+            }
+            if (isUpdatePlayerInfo)
+            {
+                scroller.m_Scorller.RefreshActiveCellViews();
             }
         }
         else

--
Gitblit v1.8.0