Browse Source

修改部分界面刷新逻辑
使用协议实现一键获取

leiyasi 1 year ago
parent
commit
df1ecaebb0

+ 3 - 2
GameClient/Assets/Game/HotUpdate/Controller/GameController.cs

@@ -193,12 +193,13 @@ namespace GFGGame
             MainStorySProxy.GetStoryInfos().Coroutine();
             MainStorySProxy.GetStoryInfos().Coroutine();
             CardSProxy.GetCardInfos().Coroutine();
             CardSProxy.GetCardInfos().Coroutine();
             TaskSProxy.GetTaskInfos();
             TaskSProxy.GetTaskInfos();
-            BattlePassTaskSProxy.GetBattlePassInfo().Coroutine();
-            ActivityAfuGiftProxy.GetAfuGiftInfo().Coroutine();
+            BattlePassTaskSProxy.GetBattlePassInfo().Coroutine();     
             DailyTaskSProxy.ReqDailyTaskInfos().Coroutine();
             DailyTaskSProxy.ReqDailyTaskInfos().Coroutine();
             NoticeSProxy.ReqSystemNoticeList().Coroutine();
             NoticeSProxy.ReqSystemNoticeList().Coroutine();
             MailSProxy.ReqMailCount().Coroutine();
             MailSProxy.ReqMailCount().Coroutine();
             FriendSProxy.ReqAllFriendInfos().Coroutine();
             FriendSProxy.ReqAllFriendInfos().Coroutine();
+            ActivityAfuGiftProxy.GetAfuGiftInfo().Coroutine();
+
             PoemPhotoSProxy.ReqAllPhotoInfos().Coroutine();
             PoemPhotoSProxy.ReqAllPhotoInfos().Coroutine();
             TravelSProxy.ReqTravelInfo().Coroutine();
             TravelSProxy.ReqTravelInfo().Coroutine();
             TravelSProxy.ReqTravelGuideInfo().Coroutine();
             TravelSProxy.ReqTravelGuideInfo().Coroutine();

+ 15 - 14
GameClient/Assets/Game/HotUpdate/Data/ActivityAfuGiftDataManager.cs

@@ -22,12 +22,16 @@ namespace GFGGame
 
 
         public List<ActivityLoginCfg> RewardCfgs { get => _rewardCfgs; set => _rewardCfgs = value; }
         public List<ActivityLoginCfg> RewardCfgs { get => _rewardCfgs; set => _rewardCfgs = value; }
 
 
-        private List<ItemData> _getRewardList = new List<ItemData>();
-        public List<ItemData> GetRewardList { get => _getRewardList; set => _getRewardList = value; }
-
         private bool isOpen;
         private bool isOpen;
         public bool IsOpen { get => isOpen; set => isOpen = value; }
         public bool IsOpen { get => isOpen; set => isOpen = value; }
 
 
+        public bool CheckIconShow()
+        {
+            var activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfoOneByType(ActivityType.AFZL);
+            return activityInfo != null && activityInfo.StartTime <= TimeHelper.ServerNow() &&
+                   activityInfo.EndTime > TimeHelper.ServerNow();
+        }
+
         public void InitActivityInfo()
         public void InitActivityInfo()
         {
         {
             Info = ActivityGlobalDataManager.Instance.GetActivityInfoOneByType(ActivityType.AFZL);
             Info = ActivityGlobalDataManager.Instance.GetActivityInfoOneByType(ActivityType.AFZL);
@@ -82,21 +86,13 @@ namespace GFGGame
             return _indexDay;
             return _indexDay;
         }
         }
 
 
-        public void AddGetReward(List<ItemData> data)
+        public bool HaveCanGetReward()
         {
         {
-            foreach (var t in data)
+            if (!isOpen)
             {
             {
-                GetRewardList.Add(t);
+                return false;
             }
             }
-        }
-
-        public void ClearGetReward()
-        {
-            GetRewardList.Clear();
-        }
 
 
-        public bool HaveCanGetReward()
-        {
             int passDay = GetIndexDay();
             int passDay = GetIndexDay();
 
 
             for (int i = passDay - 1; i >= 0; i--)
             for (int i = passDay - 1; i >= 0; i--)
@@ -114,6 +110,11 @@ namespace GFGGame
         public void Clear()
         public void Clear()
         {
         {
             isOpen = false;
             isOpen = false;
+            //info = null;
+            //_isBuy = false;
+            //_indexDay = 1;
+            //_normalRewards.Clear();
+            //_superRewards.Clear();
         }
         }
     }
     }
 }
 }

+ 27 - 2
GameClient/Assets/Game/HotUpdate/ServerProxy/ActivityAfuGiftProxy.cs

@@ -55,7 +55,7 @@ namespace GFGGame
         }
         }
 
 
         /// <summary>
         /// <summary>
-        /// 领奖
+        /// 单个领奖
         /// </summary>
         /// </summary>
         /// <param name="isPay"></param>
         /// <param name="isPay"></param>
         /// <param name="rewardDay"></param>
         /// <param name="rewardDay"></param>
@@ -69,7 +69,32 @@ namespace GFGGame
 
 
             var info = response.ActivityLoginInfo;
             var info = response.ActivityLoginInfo;
             var activityAfuGiftDataManager = ActivityAfuGiftDataManager.Instance;
             var activityAfuGiftDataManager = ActivityAfuGiftDataManager.Instance;
-            activityAfuGiftDataManager.AddGetReward(ItemUtil.CreateItemDataList(response.BonusList));
+            // 奖励弹窗
+            BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.BonusList));
+
+            activityAfuGiftDataManager.SetRewardStateList(info.FreeRewardStatusList, false);
+            activityAfuGiftDataManager.SetRewardStateList(info.PayRewardStatusList, true);
+
+            EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
+            return false;
+        }
+
+        /// <summary>
+        /// 一键领取
+        /// </summary>
+        /// <param name="isPay"></param>
+        /// <param name="rewardDay"></param>
+        /// <returns></returns>
+        public static async ETTask<bool> ReqGetAllReward()
+        {
+            var response =
+                (S2C_GetAllActivityLoginReward)await MessageHelper.SendToServer(new C2S_GetAllActivityLoginReward() { });
+            if (!(response is { Error: ErrorCode.ERR_Success })) return false;
+
+            var info = response.ActivityLoginInfo;
+            var activityAfuGiftDataManager = ActivityAfuGiftDataManager.Instance;
+            // 奖励弹窗
+            BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.BonusList));
 
 
             activityAfuGiftDataManager.SetRewardStateList(info.FreeRewardStatusList, false);
             activityAfuGiftDataManager.SetRewardStateList(info.FreeRewardStatusList, false);
             activityAfuGiftDataManager.SetRewardStateList(info.PayRewardStatusList, true);
             activityAfuGiftDataManager.SetRewardStateList(info.PayRewardStatusList, true);

+ 21 - 52
GameClient/Assets/Game/HotUpdate/Views/ActivityAfuGift/ActivityAfuGiftView.cs

@@ -47,16 +47,18 @@ namespace GFGGame
             _rewardListUI = _ui.m_panel.m_scrollPane.m_list;
             _rewardListUI = _ui.m_panel.m_scrollPane.m_list;
             _rewardListUI.itemRenderer = RenderListReward;
             _rewardListUI.itemRenderer = RenderListReward;
             _rewardListUI.numItems = ActivityAfuGiftDataManager.Instance.RewardCfgs.Count;
             _rewardListUI.numItems = ActivityAfuGiftDataManager.Instance.RewardCfgs.Count;
-            InitUI();
         }
         }
 
 
         protected override void OnShown()
         protected override void OnShown()
         {
         {
             base.OnShown();
             base.OnShown();
+
+            InitUI();
+            UpdateState();
             ProgressAutoLocate();
             ProgressAutoLocate();
             UpdateTime(null);
             UpdateTime(null);
             Timers.inst.Add(1, 0, UpdateTime);
             Timers.inst.Add(1, 0, UpdateTime);
-            UpdateState();
+
         }
         }
 
 
         protected override void OnHide()
         protected override void OnHide()
@@ -80,25 +82,19 @@ namespace GFGGame
         private void InitUI()
         private void InitUI()
         {
         {
             _ui.m_c1.SetSelectedIndex(ActivityAfuGiftDataManager.Instance.GetIsBuy() ? 1 : 0);
             _ui.m_c1.SetSelectedIndex(ActivityAfuGiftDataManager.Instance.GetIsBuy() ? 1 : 0);
-            // 使列表宽度等于子节点的总宽度
-            float itemWidth = _rewardListUI.GetChildAt(0).width;
-            float columnGap = _rewardListUI.columnGap;
-            _rewardListUI.width = CalculateListWidth(_rewardListUI.numItems, itemWidth, columnGap);
-            Timers.inst.StartCoroutine(InitProgressWidth());
+            _rewardListUI.ResizeToFit();
+            InitProgressWidth();
         }
         }
 
 
-        private IEnumerator InitProgressWidth()
+        private void InitProgressWidth()
         {
         {
             GProgressBar gProgressBar = _ui.m_panel.m_scrollPane.m_progress;
             GProgressBar gProgressBar = _ui.m_panel.m_scrollPane.m_progress;
-            gProgressBar.width = 0;
-            // 等待窗口动画结束
-            yield return new WaitForSeconds(0.3f);
             // 根据列表 初始化进度条长度
             // 根据列表 初始化进度条长度
             float marginLeft = 149;
             float marginLeft = 149;
             gProgressBar.width = marginLeft + _rewardListUI.GetChildAt(_rewardListUI.numChildren - 1).position.x - _rewardListUI.GetChildAt(0).position.x;
             gProgressBar.width = marginLeft + _rewardListUI.GetChildAt(_rewardListUI.numChildren - 1).position.x - _rewardListUI.GetChildAt(0).position.x;
             // 初始化进度条值
             // 初始化进度条值
             int indexDay = ActivityAfuGiftDataManager.Instance.GetIndexDay();
             int indexDay = ActivityAfuGiftDataManager.Instance.GetIndexDay();
-            gProgressBar.value = CalculateProgressCount(indexDay, _rewardListUI.numChildren);
+            gProgressBar.value = CalculateProgressValue(indexDay, _rewardListUI.numChildren);
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -110,12 +106,7 @@ namespace GFGGame
                 = (ActivityAfuGiftDataManager.Instance.GetIndexDay() - 1) * (_rewardListUI.GetChildAt(0).width + _rewardListUI.columnGap);
                 = (ActivityAfuGiftDataManager.Instance.GetIndexDay() - 1) * (_rewardListUI.GetChildAt(0).width + _rewardListUI.columnGap);
         }
         }
 
 
-        private float CalculateListWidth(int num, float itemWidth, float columnGap)
-        {
-            return num * itemWidth + (num - 1) * columnGap;
-        }
-
-        private double CalculateProgressCount(int indexDay, int sumDay)
+        private double CalculateProgressValue(int indexDay, int sumDay)
         {
         {
             int defaultLen = 18;
             int defaultLen = 18;
             if (indexDay == sumDay)
             if (indexDay == sumDay)
@@ -174,7 +165,8 @@ namespace GFGGame
             // 已经到达的日期
             // 已经到达的日期
             int passDay = ActivityAfuGiftDataManager.Instance.GetIndexDay();
             int passDay = ActivityAfuGiftDataManager.Instance.GetIndexDay();
             bool arrive = dayIndex <= passDay;
             bool arrive = dayIndex <= passDay;
-
+            
+            // 显示锁/遮罩
             if (isVip)
             if (isVip)
             {
             {
                 if (ActivityAfuGiftDataManager.Instance.GetIsBuy())
                 if (ActivityAfuGiftDataManager.Instance.GetIsBuy())
@@ -195,7 +187,6 @@ namespace GFGGame
             int getState;
             int getState;
             if (arrive)
             if (arrive)
             {
             {
-                // Vip专属
                 if (isVip)
                 if (isVip)
                 {
                 {
                     getState = ActivityAfuGiftDataManager.Instance.GetSuperRewardStateByDay(dayIndex - 1);
                     getState = ActivityAfuGiftDataManager.Instance.GetSuperRewardStateByDay(dayIndex - 1);
@@ -230,6 +221,14 @@ namespace GFGGame
                         break;
                         break;
                 }
                 }
             }
             }
+            else
+            {
+                canGet = false;
+                comItem.m_grpGot.visible = false;
+                obj.touchable = true;
+                // 隐藏红点
+                RedDotController.Instance.SetComRedDot(obj.asCom, false);
+            }
 
 
             obj.data = new GetState
             obj.data = new GetState
             {
             {
@@ -247,7 +246,7 @@ namespace GFGGame
 
 
             if (getState.canGet)
             if (getState.canGet)
             {
             {
-                GetReward(getState, (int)obj.parent.data + 1);
+                ActivityAfuGiftProxy.ReqGetReward(getState.isVip, (int)obj.parent.data + 1).Coroutine();
             }
             }
             else
             else
             {
             {
@@ -255,36 +254,6 @@ namespace GFGGame
             }
             }
         }
         }
 
 
-        private async Task GetReward(GetState getState, int indexDay)
-        {
-            ActivityAfuGiftDataManager.Instance.ClearGetReward();
-            await ActivityAfuGiftProxy.ReqGetReward(getState.isVip, indexDay);
-            // 奖励弹窗
-            BonusController.TryShowBonusList(ActivityAfuGiftDataManager.Instance.GetRewardList);
-        }
-
-        private async Task GetAllReward()
-        {
-            int passDay = ActivityAfuGiftDataManager.Instance.GetIndexDay();
-            ActivityAfuGiftDataManager.Instance.ClearGetReward();
-
-            for (int i = passDay - 1; i >= 0; i--)
-            {
-                if (ActivityAfuGiftDataManager.Instance.GetNormalRewardStateByDay(i) == ConstBonusStatus.CAN_GET)
-                {
-                    await ActivityAfuGiftProxy.ReqGetReward(false, (i + 1));
-                }
-
-                if (ActivityAfuGiftDataManager.Instance.GetSuperRewardStateByDay(i) == ConstBonusStatus.CAN_GET)
-                {
-                    await ActivityAfuGiftProxy.ReqGetReward(true, (i + 1));
-                }
-            }
-
-            // 奖励弹窗
-            BonusController.TryShowBonusList(ActivityAfuGiftDataManager.Instance.GetRewardList);
-        }
-
         /// <summary>
         /// <summary>
         /// 领取所有奖励按钮
         /// 领取所有奖励按钮
         /// </summary>
         /// </summary>
@@ -297,7 +266,7 @@ namespace GFGGame
                 return;
                 return;
             }
             }
 
 
-            GetAllReward();
+            ActivityAfuGiftProxy.ReqGetAllReward().Coroutine();
         }
         }
 
 
         /// <summary>
         /// <summary>

+ 5 - 1
GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs

@@ -616,6 +616,10 @@ namespace GFGGame
 
 
         private void OnClickBtnAfuGift()
         private void OnClickBtnAfuGift()
         {
         {
+            if (!ActivityAfuGiftDataManager.Instance.IsOpen)
+            {
+                return;
+            }
             ViewManager.Show<ActivityAfuGiftView>(null, new[] { typeof(MainUIView).FullName, this.viewData });
             ViewManager.Show<ActivityAfuGiftView>(null, new[] { typeof(MainUIView).FullName, this.viewData });
         }
         }
         private void OnClickBtnDay7()
         private void OnClickBtnDay7()
@@ -985,7 +989,7 @@ namespace GFGGame
                 FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(FieldGuideView).Name, false);
                 FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(FieldGuideView).Name, false);
 
 
             _btnActivityDay7.visible = ActivityDay7DataManager.Instance.CheckOpen();
             _btnActivityDay7.visible = ActivityDay7DataManager.Instance.CheckOpen();
-            ChangeAfuActivityState();
+            _ui.m_btnActivityAfuGift.target.visible = ActivityAfuGiftDataManager.Instance.CheckIconShow();
 
 
             _ui.m_list.ResizeToFit();
             _ui.m_list.ResizeToFit();
         }
         }