lcy
2025-12-03 b9a6e7e896b451e9c915e782a1789b2afe079cc9
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()
@@ -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();
    }
}