From 51b0f6ed9f4e1d3bb6f8144470b46908c7699a96 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 11 五月 2026 16:20:37 +0800
Subject: [PATCH] Merge branch 'master' into h5version

---
 Main/System/Guild/GuildBaseWin.cs |  123 +++++++++++++++++++++++++++++++++++++----
 1 files changed, 111 insertions(+), 12 deletions(-)

diff --git a/Main/System/Guild/GuildBaseWin.cs b/Main/System/Guild/GuildBaseWin.cs
index 8584a57..9b5325f 100644
--- a/Main/System/Guild/GuildBaseWin.cs
+++ b/Main/System/Guild/GuildBaseWin.cs
@@ -1,7 +1,9 @@
+锘縰sing System;
 using System.Collections;
 using System.Collections.Generic;
 using Cysharp.Threading.Tasks;
 using DG.Tweening;
+using System.Text;
 using UnityEngine;
 using UnityEngine.UI;
 
@@ -19,8 +21,9 @@
     [SerializeField] Text guildMemberCountText;
     [SerializeField] Button rankBtn;
     [SerializeField] Button storeBtn;
-
-
+    [SerializeField] RichText talkInfoText;
+    [SerializeField] Button talkBtn;
+    [SerializeField] Button talkBtn1;
     [SerializeField] Button requestBtn;
 
 
@@ -40,21 +43,27 @@
     {
         guildBtn.AddListener(() =>
         {
-            UIManager.Instance.OpenWindow<GuildHallWin>();
+            UIManager.Instance.OpenWindowAsync<GuildHallWin>().Forget();
         });
 
         requestBtn.AddListener(() =>
         {
-            // UIManager.Instance.OpenWindow<GuildRequestWin>();
+            UIManager.Instance.OpenWindowAsync<GuildApplyListWin>().Forget();
         });
 
         guildHawkerBtn.AddListener(OpenHawker);
         storeBtn.AddListener(() =>
         {
             StoreModel.Instance.selectStoreFuncType = StoreFunc.Guild;
-            UIManager.Instance.OpenWindow<StoreBaseWin>();
+            UIManager.Instance.OpenWindowAsync<StoreBaseWin>().Forget();
+        });
+        rankBtn.AddListener(() =>
+        {
+            UIManager.Instance.OpenWindowAsync<GuildRankWin>().Forget();
         });
         InitHawker();
+        talkBtn.AddListener(OnClickTalkButton);
+        talkBtn1.AddListener(OnClickTalkButton);
     }
 
 
@@ -62,9 +71,11 @@
     {
         if (PlayerDatas.Instance.fairyData.fairy == null)
             return;
+
         GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
         GlobalTimeEvent.Instance.fiveSecondEvent += OnFiveSecondEvent;
-
+        ChatManager.Instance.OnUpdateTalkEvent += OnUpdateTalkEvent;
+        PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;
         Display();
     }
 
@@ -72,13 +83,27 @@
     {
         GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
         GlobalTimeEvent.Instance.fiveSecondEvent -= OnFiveSecondEvent;
+        ChatManager.Instance.OnUpdateTalkEvent -= OnUpdateTalkEvent;
+        PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo;
     }
 
+    void OnRefreshFairyInfo()
+    {
+        ShowGuildInfo();
+    }
+
+    private void OnUpdateTalkEvent(ChatChannel channel, TalkData data, bool isSendBullet)
+    {
+        if (channel != ChatChannel.Guild)
+            return;
+        ShowTalkInfo();
+    }
 
     void Display()
     {
         ShowGuildInfo();
         ShowHawkerTime();
+        ShowTalkInfo();
     }
 
     void OnSecondEvent()
@@ -88,6 +113,7 @@
 
     void ShowGuildInfo()
     {
+        requestBtn.SetActive(PlayerDatas.Instance.fairyData.HasFairy && PlayerDatas.Instance.fairyData.IsCanFunc(LimitFunc.CanCall));
         emblemCell.Display(PlayerDatas.Instance.fairyData.fairy.EmblemID, PlayerDatas.Instance.fairyData.fairy.EmblemWord, 0.8f);
         guildNameText.text = PlayerDatas.Instance.fairyData.fairy.FamilyName;
         var config = FamilyConfig.Get(PlayerDatas.Instance.fairyData.fairy.FamilyLV);
@@ -101,7 +127,7 @@
             SysNotifyMgr.Instance.ShowTip("GuildSys17");
             return;
         }
-        UIManager.Instance.OpenWindow<GuildHawkerWin>();
+        UIManager.Instance.OpenWindowAsync<GuildHawkerWin>().Forget();
     }
 
     void ShowHawkerTime(bool modelPlay = false)
@@ -123,7 +149,7 @@
             if (modelPlay)
                 HawkerMove(true);
         }
-        
+
 
     }
 
@@ -137,7 +163,7 @@
         {
             hawkerRect.localPosition = pos2.localPosition;
         }
-        hawkerModel.PlayAnimation("idle", true);
+        // hawkerModel.PlayAnimation("zoulu", true);
     }
 
     //isShow true璧板嚭鏉�,false璧板嚭鍘�
@@ -150,7 +176,7 @@
         FuncNPCManager.Instance.isHawkerShowNow = isShow;
         hawkerModel.PlayAnimation("zoulu", true);
         FuncNPCManager.Instance.isHawkerStandBy = false;
-        hawkerModel.transform.localScale = new Vector3(isShow ? hawkerModel.transform.localScale.x : -hawkerModel.transform.localScale.x, hawkerModel.transform.localScale.y, hawkerModel.transform.localScale.z);
+        hawkerModel.transform.localScale = new Vector3(isShow ? Math.Abs(hawkerModel.transform.localScale.x) : -Math.Abs(hawkerModel.transform.localScale.x), hawkerModel.transform.localScale.y, hawkerModel.transform.localScale.z);
         hawkerRect.DOLocalMove(isShow ? pos1.localPosition : pos2.localPosition, 1f).onComplete = () =>
         {
             hawkerModel.PlayAnimation("idle", true);
@@ -158,8 +184,8 @@
             FuncNPCManager.Instance.isHawkerStandBy = isShow;
         };
     }
-    
-    
+
+
 
 
     //NPC瀵硅瘽鐩稿叧
@@ -185,8 +211,81 @@
     async UniTask Talk(int index)
     {
         await UniTask.Delay(5000);
+        if (this == null) return; // destroyed during await
         talkRects[index].SetActive(false);
         var npc = funcNPCs[index].GetModel();
         npc.PlayAnimation("idle", true);
     }
+
+    public void OnClickTalkButton()
+    {
+        ChatManager.Instance.nowChatTab = ChatChannel.Guild;
+        ChatManager.Instance.nowChatChannel = ChatChannel.Guild;
+        UIManager.Instance.OpenWindowAsync<ChatWin>().Forget();
+    }
+
+    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;
+        }
+    }
+
+    List<TalkData> showTalkDatas = new List<TalkData>();
+    void ShowTalkInfo()
+    {
+        if (!ChatManager.Instance.TryGetTalkData(ChatChannel.Guild, out List<TalkData> datas) || datas.IsNullOrEmpty())
+        {
+            talkInfoText.text = string.Empty;
+            return;
+        }
+        showTalkDatas.Clear();
+
+        // 浠庡悗鍚戝墠閬嶅巻锛屾壘鍒版渶鍚庝袱鏉$帺瀹舵秷鎭紙杩囨护鎺夌郴缁熸秷鎭拰鏃ユ湡娑堟伅锛�
+        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

--
Gitblit v1.8.0