From 89343a7a0909e5244a3b69c4db1294de4536243b Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期一, 15 十二月 2025 18:15:22 +0800
Subject: [PATCH] 262 幻境阁系统-客户端 新增仅适用武将解锁的头像和形象的红点移除规则

---
 Main/System/Guild/GuildBaseWin.cs |  238 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 236 insertions(+), 2 deletions(-)

diff --git a/Main/System/Guild/GuildBaseWin.cs b/Main/System/Guild/GuildBaseWin.cs
index 0615870..d45e089 100644
--- a/Main/System/Guild/GuildBaseWin.cs
+++ b/Main/System/Guild/GuildBaseWin.cs
@@ -1,5 +1,9 @@
+using System;
 using System.Collections;
 using System.Collections.Generic;
+using Cysharp.Threading.Tasks;
+using DG.Tweening;
+using System.Text;
 using UnityEngine;
 using UnityEngine.UI;
 
@@ -8,27 +12,257 @@
 /// </summary>
 public class GuildBaseWin : UIBase
 {
+    [SerializeField] Button guildBtn;
+    [SerializeField] Button guildHawkerBtn; //琛屽晢
+    [SerializeField] Text guildHawkerTimeText;
+    [SerializeField] Text guildHawkerInfo;  //澶囪揣
+    [SerializeField] GuildEmblemCell emblemCell;
+    [SerializeField] Text guildNameText;
+    [SerializeField] Text guildMemberCountText;
     [SerializeField] Button rankBtn;
+    [SerializeField] Button storeBtn;
+    [SerializeField] RichText talkInfoText;
+    [SerializeField] Button talkBtn;
+    [SerializeField] Button talkBtn1;
+    [SerializeField] Button requestBtn;
+
+
+    //NPC瀵硅瘽鐩稿叧
+    [Header("琛屽晢蹇呴』鏀剧涓�涓�")]
+    [SerializeField] HeroSkinModel[] funcNPCs;
+    [SerializeField] Transform[] talkRects;
+    [SerializeField] Text[] talkTexts;
+
+    //琛屽晢鐗规畩澶勭悊
+    [SerializeField] Transform hawkerRect;
+    [SerializeField] Transform pos1;
+    [SerializeField] Transform pos2;
+    [SerializeField] UIHeroController hawkerModel;
 
     protected override void InitComponent()
     {
+        guildBtn.AddListener(() =>
+        {
+            UIManager.Instance.OpenWindow<GuildHallWin>();
+        });
 
+        requestBtn.AddListener(() =>
+        {
+            // UIManager.Instance.OpenWindow<GuildRequestWin>();
+        });
+
+        guildHawkerBtn.AddListener(OpenHawker);
+        storeBtn.AddListener(() =>
+        {
+            StoreModel.Instance.selectStoreFuncType = StoreFunc.Guild;
+            UIManager.Instance.OpenWindow<StoreBaseWin>();
+        });
+        InitHawker();
+        talkBtn.AddListener(OnClickTalkButton);
+        talkBtn1.AddListener(OnClickTalkButton);
     }
 
 
     protected override void OnPreOpen()
     {
+        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();
     }
 
     protected override void OnPreClose()
     {
+        GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
+        GlobalTimeEvent.Instance.fiveSecondEvent -= OnFiveSecondEvent;
+        ChatManager.Instance.OnUpdateTalkEvent -= OnUpdateTalkEvent;
+        PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo;
     }
 
-
-    public override void Refresh()
+    void OnRefreshFairyInfo()
     {
+        ShowGuildInfo();
+    }
+
+    private void OnUpdateTalkEvent(ChatChannel channel, TalkData data)
+    {
+        if (channel != ChatChannel.Guild)
+            return;
+        ShowTalkInfo();
+    }
+
+    void Display()
+    {
+        ShowGuildInfo();
+        ShowHawkerTime();
+        ShowTalkInfo();
+    }
+
+    void OnSecondEvent()
+    {
+        ShowHawkerTime(true);
+    }
+
+    void ShowGuildInfo()
+    {
+        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);
+        guildMemberCountText.text = PlayerDatas.Instance.fairyData.fairy.MemberCount + "/" + config.MemberMax;
+    }
+
+    void OpenHawker()
+    {
+        if (TimeUtility.GetToTheHourSeconds() > 0)
+        {
+            SysNotifyMgr.Instance.ShowTip("GuildSys17");
+            return;
+        }
+        UIManager.Instance.OpenWindow<GuildHawkerWin>();
+    }
+
+    void ShowHawkerTime(bool modelPlay = false)
+    {
+        var toTenSeconds = TimeUtility.GetToTheHourSeconds();
+        if (toTenSeconds > 0)
+        {
+            guildHawkerTimeText.text = TimeUtility.SecondsToHMS(toTenSeconds);
+            guildHawkerInfo.SetActive(true);
+            var addStr = new string('.', (int)Time.time % 4);
+            guildHawkerInfo.text = Language.Get("Guild_72") + addStr;
+            if (modelPlay)
+                HawkerMove(false);
+        }
+        else
+        {
+            guildHawkerTimeText.text = TimeUtility.SecondsToHMS((int)(TimeUtility.GetTodayEndTime() - TimeUtility.ServerNow).TotalSeconds);
+            guildHawkerInfo.SetActive(false);
+            if (modelPlay)
+                HawkerMove(true);
+        }
+
 
     }
 
+    void InitHawker()
+    {
+        if (FuncNPCManager.Instance.isHawkerStandBy)
+        {
+            hawkerRect.localPosition = pos1.localPosition;
+        }
+        else
+        {
+            hawkerRect.localPosition = pos2.localPosition;
+        }
+        // hawkerModel.PlayAnimation("zoulu", true);
+    }
 
+    //isShow true璧板嚭鏉�,false璧板嚭鍘�
+    void HawkerMove(bool isShow)
+    {
+        if (isShow == FuncNPCManager.Instance.isHawkerShowNow)
+        {
+            return;
+        }
+        FuncNPCManager.Instance.isHawkerShowNow = isShow;
+        hawkerModel.PlayAnimation("zoulu", true);
+        FuncNPCManager.Instance.isHawkerStandBy = false;
+        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);
+
+            FuncNPCManager.Instance.isHawkerStandBy = isShow;
+        };
+    }
+
+
+
+
+    //NPC瀵硅瘽鐩稿叧
+    void OnFiveSecondEvent()
+    {
+        var index = FuncNPCManager.Instance.GetRandomGuildNpcTalk();
+        if (index == -1)
+        {
+            return;
+        }
+        var talk = FuncNPCManager.Instance.GetGuildTalk(funcNPCs[index].heroSkinID);
+        if (talk != null)
+        {
+            talkTexts[index].text = Language.Get(talk);
+            talkRects[index].SetActive(true);
+        }
+
+        var npc = funcNPCs[index].GetModel();
+        npc.PlayAnimation("hanhua", true);
+        Talk(index).Forget();
+    }
+
+    async UniTask Talk(int index)
+    {
+        await UniTask.Delay(5000);
+        talkRects[index].SetActive(false);
+        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