From bcd1dcef07dc129d68539ca2d562c5df53007f36 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期四, 12 二月 2026 21:32:52 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

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

diff --git a/Main/System/Chat/ChatWin.cs b/Main/System/Chat/ChatWin.cs
index 5e026dc..6b58dbc 100644
--- a/Main/System/Chat/ChatWin.cs
+++ b/Main/System/Chat/ChatWin.cs
@@ -22,7 +22,9 @@
     [SerializeField] TextEx txtSendChat;
     [SerializeField] ScrollerController scrWorld;
     [SerializeField] ScrollerController scrGuild;
+    [SerializeField] ScrollerController scrCrossServer;
 
+    [SerializeField] ButtonEx serversBtn;
     private int unreadMsgCount = 0;
     [SerializeField] ButtonEx btnNewMsgTip;
     [SerializeField] TextEx txtNewMsgTip;
@@ -32,6 +34,7 @@
     bool isSettingOpen = false;
     [SerializeField] ChatSettingButton btnWorldSetting;
     [SerializeField] ChatSettingButton btnGuildSetting;
+    [SerializeField] ChatSettingButton btnCrossServerSetting;
     ChatManager manager { get { return ChatManager.Instance; } }
 
     protected override void InitComponent()
@@ -69,6 +72,11 @@
                 RefreshChat(manager.nowChatChannel, scrGuild);
                 ScrollerJump(scrGuild, ChatChannel.Guild);
             }
+            else if (manager.nowChatChannel == ChatChannel.CrossServer)
+            {
+                RefreshChat(manager.nowChatChannel, scrCrossServer);
+                ScrollerJump(scrCrossServer, ChatChannel.CrossServer);
+            }
             ClearUnreadMsg();
         });
         btnSetting.SetListener(() =>
@@ -76,7 +84,10 @@
             isSettingOpen = !isSettingOpen;
             transSettings.SetActive(isSettingOpen);
         });
-
+        serversBtn.SetListener(() =>
+        {
+            UIHelper.ShowServersPanel(GuildManager.Instance.crossServerIDList);
+        });
     }
 
     // 娓呯悊鏈娑堟伅鐘舵��
@@ -104,12 +115,18 @@
         manager.OnUpdatePlayerInfoEvent += OnUpdatePlayerInfoEvent;
 
         scrChatTab.OnRefreshCell += OnRefreshChatTabCell;
+
         scrWorld.OnGetDynamicSize += OnGetWorldChatDynamicSize;
         scrWorld.OnRefreshCell += OnRefreshWorldCell;
         scrWorld.mScrollRect.onValueChanged.AddListener(OnWorldScrollValChange);
+
         scrGuild.OnGetDynamicSize += OnGetGuildChatDynamicSize;
         scrGuild.OnRefreshCell += OnRefreshGuildCell;
         scrGuild.mScrollRect.onValueChanged.AddListener(OnGuildScrollValChange);
+
+        scrCrossServer.OnGetDynamicSize += OnGetChatDynamicSize;
+        scrCrossServer.OnRefreshCell += OnRefreshCell;
+        scrCrossServer.mScrollRect.onValueChanged.AddListener(OnCrossServerScrollValChange);
 
         clickScreenOtherSpace.AddListener(OnClickScreenOtherSpace);
         GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
@@ -119,6 +136,7 @@
         transSettings.SetActive(isSettingOpen);
         btnWorldSetting.SetChannelType(ChatChannel.World);
         btnGuildSetting.SetChannelType(ChatChannel.Guild);
+        btnCrossServerSetting.SetChannelType(ChatChannel.CrossServer);
         inputChat.characterLimit = ChatManager.Instance.characterLimit;
         CreaterAll(manager.nowChatTab);
     }
@@ -139,9 +157,15 @@
         scrWorld.OnGetDynamicSize -= OnGetWorldChatDynamicSize;
         scrWorld.OnRefreshCell -= OnRefreshWorldCell;
         scrWorld.mScrollRect.onValueChanged.RemoveListener(OnWorldScrollValChange);
+
         scrGuild.OnGetDynamicSize -= OnGetGuildChatDynamicSize;
         scrGuild.OnRefreshCell -= OnRefreshGuildCell;
         scrGuild.mScrollRect.onValueChanged.RemoveListener(OnGuildScrollValChange);
+
+        scrCrossServer.OnGetDynamicSize -= OnGetChatDynamicSize;
+        scrCrossServer.OnRefreshCell -= OnRefreshCell;
+        scrCrossServer.mScrollRect.onValueChanged.RemoveListener(OnCrossServerScrollValChange);
+
         GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
         clickScreenOtherSpace.RemoveAllListeners();
     }
@@ -165,6 +189,10 @@
         else if (channel == ChatChannel.Guild)
         {
             CreateScroller(scrGuild, channel);
+        }
+        else if (channel == ChatChannel.CrossServer)
+        {
+            CreateScroller(scrCrossServer, channel);
         }
     }
 
@@ -227,7 +255,10 @@
             {
                 if (scrWorld.lockType != EnhanceLockType.LockVerticalBottom)
                     scrWorld.lockType = EnhanceLockType.LockVerticalBottom;
-
+                if (scrGuild.lockType != EnhanceLockType.LockVerticalBottom)
+                    scrGuild.lockType = EnhanceLockType.LockVerticalBottom;
+                if (scrCrossServer.lockType != EnhanceLockType.LockVerticalBottom)
+                    scrCrossServer.lockType = EnhanceLockType.LockVerticalBottom;
                 // 濡傛灉鍥炲埌搴曢儴锛岀洿鎺ユ竻闆舵秷鎭�
                 ClearUnreadMsg();
             }
@@ -236,6 +267,10 @@
             {
                 if (scrWorld.lockType != EnhanceLockType.KeepVertical)
                     scrWorld.lockType = EnhanceLockType.KeepVertical;
+                if (scrGuild.lockType != EnhanceLockType.KeepVertical)
+                    scrGuild.lockType = EnhanceLockType.KeepVertical;
+                if (scrCrossServer.lockType != EnhanceLockType.KeepVertical)
+                    scrCrossServer.lockType = EnhanceLockType.KeepVertical;
             }
         }
     }
@@ -248,6 +283,10 @@
     private void OnGuildScrollValChange(Vector2 _pos)
     {
         OnScrollValChange(scrGuild, _pos);
+    }
+    private void OnCrossServerScrollValChange(Vector2 _pos)
+    {
+        OnScrollValChange(scrCrossServer, _pos);
     }
 
     private void OnScrollValChange(ScrollerController scorller, Vector2 _pos)
@@ -308,7 +347,11 @@
         scrGuild.lockType = EnhanceLockType.LockVerticalBottom; // 鍒濆閿佸畾搴曢儴
         scrGuild.SetActive(chatTab == ChatTab.Guild);
 
-        transInput.SetActive(chatTab == ChatTab.World || chatTab == ChatTab.Guild);
+        scrCrossServer.lockType = EnhanceLockType.LockVerticalBottom; // 鍒濆閿佸畾搴曢儴
+        scrCrossServer.SetActive(chatTab == ChatTab.CrossServer);
+
+        transInput.SetActive(true);
+        serversBtn.SetActive(chatTab == ChatTab.CrossServer);
 
         CreateChatTabScroller();
 
@@ -324,6 +367,12 @@
                 manager.nowChatChannel = ChatChannel.Guild;
                 CreateScroller(scrGuild, ChatChannel.Guild);
                 ScrollerJump(scrGuild, ChatChannel.Guild);
+                ClearUnreadMsg();
+                break;
+            case ChatTab.CrossServer:
+                manager.nowChatChannel = ChatChannel.CrossServer;
+                CreateScroller(scrCrossServer, ChatChannel.CrossServer);
+                ScrollerJump(scrCrossServer, ChatChannel.CrossServer);
                 ClearUnreadMsg();
                 break;
         }
@@ -354,6 +403,10 @@
         else if (type == ChatChannel.Guild)
         {
             RefreshChat(type, scrGuild, playerId, isUpdatePlayerInfo);
+        }
+        else if (type == ChatChannel.CrossServer)
+        {
+            RefreshChat(type, scrCrossServer, playerId, isUpdatePlayerInfo);
         }
 
     }
@@ -391,6 +444,8 @@
             return;
         if (type == ChatChannel.Guild && manager.nowChatTab != ChatTab.Guild)
             return;
+        if (type == ChatChannel.CrossServer && manager.nowChatTab != ChatTab.CrossServer)
+            return;
         // 1. 鑷繁鍙戦�佺殑娑堟伅 -> 寮哄埗璺宠浆鍒板簳閮� + 娓呴浂
         if (playerId == PlayerDatas.Instance.PlayerId)
         {
@@ -423,7 +478,7 @@
             }
 
             // 鐗规畩鎯呭喌锛氬鏋滄湭璇绘暟閲忓法澶э紙瓒呰繃浜嗘�绘樉绀烘暟閲忥級,璇存槑鏁翠釜鍒楄〃閮借鍒锋柊浜�,鐩存帴娑堥浂
-            if (unreadMsgCount >= scrWorld.GetNumberOfCells(scrWorld.m_Scorller))
+            if (unreadMsgCount >= scroller.GetNumberOfCells(scroller.m_Scorller))
             {
                 ClearUnreadMsg();
             }

--
Gitblit v1.8.0