From b9a6e7e896b451e9c915e782a1789b2afe079cc9 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期三, 03 十二月 2025 19:16:01 +0800
Subject: [PATCH] 76 聊天系统-客户端

---
 Main/System/Guild/GuildBaseWin.cs |   80 +++++++++++++++++++++++++++++++++++++---
 1 files changed, 74 insertions(+), 6 deletions(-)

diff --git a/Main/System/Guild/GuildBaseWin.cs b/Main/System/Guild/GuildBaseWin.cs
index a7d6c73..84305ce 100644
--- a/Main/System/Guild/GuildBaseWin.cs
+++ b/Main/System/Guild/GuildBaseWin.cs
@@ -3,6 +3,7 @@
 using System.Collections.Generic;
 using Cysharp.Threading.Tasks;
 using DG.Tweening;
+using System.Text;
 using UnityEngine;
 using UnityEngine.UI;
 
@@ -20,8 +21,9 @@
     [SerializeField] Text guildMemberCountText;
     [SerializeField] Button rankBtn;
     [SerializeField] Button storeBtn;
-
-
+    [SerializeField] RichText talkInfoText;
+    [SerializeField] Button talkBtn;
+    [SerializeField] Button talkBtn1;
     [SerializeField] Button requestBtn;
 
 
@@ -56,6 +58,8 @@
             UIManager.Instance.OpenWindow<StoreBaseWin>();
         });
         InitHawker();
+        talkBtn.AddListener(OnClickTalkButton);
+        talkBtn1.AddListener(OnClickTalkButton);
     }
 
 
@@ -65,7 +69,7 @@
             return;
         GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
         GlobalTimeEvent.Instance.fiveSecondEvent += OnFiveSecondEvent;
-
+        ChatManager.Instance.OnUpdateTalkEvent += OnUpdateTalkEvent;
         Display();
     }
 
@@ -73,13 +77,21 @@
     {
         GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
         GlobalTimeEvent.Instance.fiveSecondEvent -= OnFiveSecondEvent;
+        ChatManager.Instance.OnUpdateTalkEvent -= OnUpdateTalkEvent;
     }
 
+    private void OnUpdateTalkEvent(ChatChannel channel, TalkData data)
+    {
+        if (channel != ChatChannel.Guild)
+            return;
+        ShowTalkInfo();
+    }
 
     void Display()
     {
         ShowGuildInfo();
         ShowHawkerTime();
+        ShowTalkInfo();
     }
 
     void OnSecondEvent()
@@ -124,7 +136,7 @@
             if (modelPlay)
                 HawkerMove(true);
         }
-        
+
 
     }
 
@@ -159,8 +171,8 @@
             FuncNPCManager.Instance.isHawkerStandBy = isShow;
         };
     }
-    
-    
+
+
 
 
     //NPC瀵硅瘽鐩稿叧
@@ -190,4 +202,60 @@
         var npc = funcNPCs[index].GetModel();
         npc.PlayAnimation("idle", true);
     }
+
+    public void OnClickTalkButton()
+    {
+        ChatManager.Instance.nowChatTab = ChatTab.Guild;
+        ChatManager.Instance.nowChatChannel = ChatChannel.Guild;
+        UIManager.Instance.OpenWindow<ChatWin>();
+    }
+
+    public string GetGuildChatAreaContent(TalkData talkData)
+    {
+        int type = ChatManager.Instance.GetTalkDataType(talkData);
+        if (type == 0)
+        {
+            return Language.Get("L1100", Language.Get("Chat13"), talkData.Content);
+        }
+        else if (type == 1)
+        {
+            return Language.Get("L1100", Language.Get("Chat13"), talkData.Content);
+        }
+        else
+        {
+            return Language.Get("L1100", talkData.Name, talkData.Content);
+        }
+    }
+
+    public Color32 GetGuildChatAreaColor(TalkData talkData)
+    {
+        int type = ChatManager.Instance.GetTalkDataType(talkData);
+        if (type == 2)
+        {
+            return ChatManager.Instance.areaMyColor;
+        }
+        else
+        {
+            return ChatManager.Instance.areaOtherColor;
+        }
+    }
+
+    void ShowTalkInfo()
+    {
+        if (!ChatManager.Instance.TryGetTalkData(ChatChannel.Guild, out List<TalkData> datas) || datas.IsNullOrEmpty())
+        {
+            talkInfoText.text = string.Empty;
+            return;
+        }
+
+        StringBuilder stringBuilder = new StringBuilder();
+        int startIndex = Mathf.Max(datas.Count - 2, 0);
+        for (int i = startIndex; i < datas.Count; i++)
+        {
+            TalkData data = datas[i];
+            stringBuilder.Append(UIHelper.AppendColor(GetGuildChatAreaColor(data), GetGuildChatAreaContent(data)));
+            stringBuilder.AppendLine();
+        }
+        talkInfoText.text = stringBuilder.ToString();
+    }
 }
\ No newline at end of file

--
Gitblit v1.8.0