From ae3cbe69348c25601cd4dc16a8abcee789954a62 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期四, 23 十月 2025 19:55:40 +0800
Subject: [PATCH] 63 【公会】基础主体 - 捐献

---
 Main/System/Guild/GuildManager.cs |   86 +++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 82 insertions(+), 4 deletions(-)

diff --git a/Main/System/Guild/GuildManager.cs b/Main/System/Guild/GuildManager.cs
index f195061..e60323d 100644
--- a/Main/System/Guild/GuildManager.cs
+++ b/Main/System/Guild/GuildManager.cs
@@ -2,6 +2,7 @@
 using System.Collections;
 using System.Collections.Generic;
 using System.Text;
+using Cysharp.Threading.Tasks;
 using LitJson;
 using UnityEngine;
 
@@ -28,20 +29,41 @@
         }
     }
 
+    public byte[] donateCntList;
+    public event Action DonateCntListEvent;
+    public event Action<bool> EnterOrQuitGuildEvent;   //杩涘叆鎴栭��鍑哄叕浼氫簨浠�
+
     public override void Init()
     {
         ParseConfig();
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
+        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
+        PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent;
     }
     public override void Release()
     {
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
+        DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
+        PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent;
     }
 
 
-    public void OnBeforePlayerDataInitialize()
+    void OnBeforePlayerDataInitialize()
     {
         ClearGuildData();
+    }
+
+    void OnPlayerLoginOk()
+    {
+        UpdateDonateRedPoint();
+    }
+    
+    void PlayerDataRefreshEvent(PlayerDataType type)
+    {
+        if(type == PlayerDataType.default33)
+        {
+            UpdateDonateRedPoint();
+        }
     }
 
     void ClearGuildData()
@@ -53,15 +75,25 @@
         PlayerDatas.Instance.fairyData.ClearData();
     }
     
-    public void ClearGuildWhenQuit()
+    //閫�鍑哄叕浼�
+    public void AfterQuitGuild()
     {
         //閫�鍑哄叕浼�
         ClearGuildData();
-
         //闇�瑕佽浆鍒癏omeWin鐣岄潰 涓斿叧闂叕浼氱浉鍏崇晫闈�(鐖跺瓙缁ф壙鍏抽棴)
         UIManager.Instance.GetUI<MainWin>()?.ClickFunc(0);
+
+        UpdateDonateRedPoint();
+        EnterOrQuitGuildEvent?.Invoke(false);
     }
 
+    public async UniTask AfterEnterGuild()
+    {
+        //杩欓噷杩樻病鏈夊叕浼氭暟鎹�, 鍚庣画鐨勫寘浼氭洿鏂板叕浼氭暟鎹�
+        await UniTask.Delay(100);
+        UpdateDonateRedPoint();
+        EnterOrQuitGuildEvent?.Invoke(true);
+    }
 
 
     #region 閰嶇疆
@@ -524,7 +556,7 @@
     //id 0 浠h〃涓�閿姞鍏�
     public void SendApplyGuild(int id, int type)
     {
-        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Fairy, true))
+        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Guild, true))
         {
             return;
         }
@@ -674,6 +706,52 @@
 
     }
 
+    #region 鎹愯禒
+
+    public void UpdateDonateInfo(HA502_tagSCDonateCntInfo netPack)
+    {
+        donateCntList = netPack.DonateCntList;
+        DonateCntListEvent?.Invoke();
+        UpdateDonateRedPoint();
+    }
+    #endregion
+
+    #region 绾㈢偣
+    Redpoint hallRedpoint = new Redpoint(MainRedDot.MainGuildRedpoint, MainRedDot.guildHallRedpointID);
+    Redpoint donateRedpoint = new Redpoint(MainRedDot.guildHallRedpointID, MainRedDot.MainGuildRedpoint * 100);
+
+    void UpdateDonateRedPoint()
+    {
+        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Guild))
+        {
+            return;
+        }
+        donateRedpoint.state = RedPointState.None;
+        if (PlayerDatas.Instance.fairyData.fairy == null)
+        {
+            return;
+        }
+
+        //鍙湁绗竴妗g殑鎵嶉渶瑕佺孩鐐�
+        var config = FamilyDonateConfig.Get(1);
+        if (donateCntList == null)
+        {
+            if (UIHelper.CheckMoneyCount(config.MoneyType, config.MoneyValue))
+                donateRedpoint.state = RedPointState.Simple;
+            return;
+        }
+        if (donateCntList != null && donateCntList.Length > 0)
+        {
+            if (donateCntList[0] < config.DailyCnt)
+            {
+                if (UIHelper.CheckMoneyCount(config.MoneyType, config.MoneyValue))
+                    donateRedpoint.state = RedPointState.Simple;
+            }
+        }
+    }
+
+    #endregion
+
     #region 鍔犲瘑鏁板瓧
 
     //1. 灏嗘暟瀛楄ˉ鍏呭埌10浣嶏紝涓嶈冻琛�0

--
Gitblit v1.8.0