|  |  | 
 |  |  | using System.Collections;
 | 
 |  |  | using System.Collections.Generic;
 | 
 |  |  | using System.Text;
 | 
 |  |  | using Cysharp.Threading.Tasks;
 | 
 |  |  | using LitJson;
 | 
 |  |  | using UnityEngine;
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |         }
 | 
 |  |  |     }
 | 
 |  |  | 
 | 
 |  |  |     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()
 | 
 |  |  | 
 |  |  |         PlayerDatas.Instance.fairyData.ClearData();
 | 
 |  |  |     }
 | 
 |  |  |     
 | 
 |  |  |     public void ClearGuildWhenQuit()
 | 
 |  |  |     //退出公会
 | 
 |  |  |     public void AfterQuitGuild()
 | 
 |  |  |     {
 | 
 |  |  |         //退出公会
 | 
 |  |  |         ClearGuildData();
 | 
 |  |  | 
 | 
 |  |  |         //需要转到HomeWin界面 且关闭公会相关界面(父子继承关闭)
 | 
 |  |  |         UIManager.Instance.GetUI<MainWin>()?.ClickFunc(0);
 | 
 |  |  | 
 | 
 |  |  |         UpdateDonateRedPoint();
 | 
 |  |  |         EnterOrQuitGuildEvent?.Invoke(false);
 | 
 |  |  |     }
 | 
 |  |  | 
 | 
 |  |  |     public async UniTask AfterEnterGuild()
 | 
 |  |  |     {
 | 
 |  |  |         //这里还没有公会数据, 后续的包会更新公会数据
 | 
 |  |  |         await UniTask.Delay(100);
 | 
 |  |  |         UpdateDonateRedPoint();
 | 
 |  |  |         EnterOrQuitGuildEvent?.Invoke(true);
 | 
 |  |  |     }
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  |     #region 配置
 | 
 |  |  | 
 |  |  |     //id 0 代表一键加入
 | 
 |  |  |     public void SendApplyGuild(int id, int type)
 | 
 |  |  |     {
 | 
 |  |  |         if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Fairy, true))
 | 
 |  |  |         if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Guild, true))
 | 
 |  |  |         {
 | 
 |  |  |             return;
 | 
 |  |  |         }
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  |     }
 | 
 |  |  | 
 | 
 |  |  |     #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;
 | 
 |  |  |         }
 | 
 |  |  | 
 | 
 |  |  |         //只有第一档的才需要红点
 | 
 |  |  |         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
 |