yyl
2026-05-11 51b0f6ed9f4e1d3bb6f8144470b46908c7699a96
Main/System/Guild/GuildBaseWin.cs
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
@@ -43,19 +43,23 @@
    {
        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);
@@ -67,6 +71,7 @@
    {
        if (PlayerDatas.Instance.fairyData.fairy == null)
            return;
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
        GlobalTimeEvent.Instance.fiveSecondEvent += OnFiveSecondEvent;
        ChatManager.Instance.OnUpdateTalkEvent += OnUpdateTalkEvent;
@@ -87,7 +92,7 @@
        ShowGuildInfo();
    }
    private void OnUpdateTalkEvent(ChatChannel channel, TalkData data)
    private void OnUpdateTalkEvent(ChatChannel channel, TalkData data, bool isSendBullet)
    {
        if (channel != ChatChannel.Guild)
            return;
@@ -108,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);
@@ -121,7 +127,7 @@
            SysNotifyMgr.Instance.ShowTip("GuildSys17");
            return;
        }
        UIManager.Instance.OpenWindow<GuildHawkerWin>();
        UIManager.Instance.OpenWindowAsync<GuildHawkerWin>().Forget();
    }
    void ShowHawkerTime(bool modelPlay = false)
@@ -205,6 +211,7 @@
    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);
@@ -212,9 +219,9 @@
    public void OnClickTalkButton()
    {
        ChatManager.Instance.nowChatTab = ChatTab.Guild;
        ChatManager.Instance.nowChatTab = ChatChannel.Guild;
        ChatManager.Instance.nowChatChannel = ChatChannel.Guild;
        UIManager.Instance.OpenWindow<ChatWin>();
        UIManager.Instance.OpenWindowAsync<ChatWin>().Forget();
    }
    public string GetGuildChatAreaContent(TalkData talkData)
@@ -247,6 +254,7 @@
        }
    }
    List<TalkData> showTalkDatas = new List<TalkData>();
    void ShowTalkInfo()
    {
        if (!ChatManager.Instance.TryGetTalkData(ChatChannel.Guild, out List<TalkData> datas) || datas.IsNullOrEmpty())
@@ -254,15 +262,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();
    }
}