Browse Source

添加新活动逻辑

leiyasi 1 year ago
parent
commit
818b057705
20 changed files with 133 additions and 17 deletions
  1. 6 1
      GameClient/Assets/Game/HotUpdate/Data/ActivityAfuGiftDataManager.cs
  2. 3 0
      GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityAFuGift/UI_day.cs
  3. 36 6
      GameClient/Assets/Game/HotUpdate/ServerProxy/ActivityAfuGiftProxy.cs
  4. 88 10
      GameClient/Assets/Game/HotUpdate/Views/ActivityAfuGift/ActivityAfuGiftView.cs
  5. BIN
      GameClient/Assets/ResIn/UI/ActivityAFuGift/ActivityAFuGift_atlas0!a.png
  6. BIN
      GameClient/Assets/ResIn/UI/ActivityAFuGift/ActivityAFuGift_atlas0.png
  7. BIN
      GameClient/Assets/ResIn/UI/ActivityAFuGift/ActivityAFuGift_fui.bytes
  8. BIN
      GameClient/Assets/ResIn/UI/Card/Card_fui.bytes
  9. BIN
      GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0!a.png
  10. BIN
      GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0.png
  11. BIN
      GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0_1!a.png
  12. BIN
      GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0_1.png
  13. BIN
      GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0_2!a.png
  14. BIN
      GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0_2.png
  15. BIN
      GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0_4!a.png
  16. BIN
      GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0_4.png
  17. BIN
      GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0_5!a.png
  18. BIN
      GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0_5.png
  19. BIN
      GameClient/Assets/ResIn/UI/CommonGame/CommonGame_fui.bytes
  20. BIN
      GameClient/Assets/ResIn/UI/FieldGuide/FieldGuide_fui.bytes

+ 6 - 1
GameClient/Assets/Game/HotUpdate/Data/ActivityAfuGiftDataManager.cs

@@ -50,7 +50,7 @@ namespace GFGGame
 
         public bool CanGetSuperReward(int id)
         {
-            return !_superRewards.Contains(id);
+            return _isBuy && !_superRewards.Contains(id);
         }
 
         public void AddNormalReward(int levelId)
@@ -67,5 +67,10 @@ namespace GFGGame
         {
             _isBuy = isBuy;
         }
+
+        public bool GetIsBuy()
+        {
+            return _isBuy;
+        }
     }
 }

+ 3 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/ActivityAFuGift/UI_day.cs

@@ -7,6 +7,7 @@ namespace UI.ActivityAFuGift
     public partial class UI_day
     {
         public GComponent target;
+        public Controller m_light;
         public GTextField m_day;
         public const string URL = "ui://f3o25i6ljm6kl";
         public const string PACKAGE_NAME = "ActivityAFuGift";
@@ -55,10 +56,12 @@ namespace UI.ActivityAFuGift
 
         private void Init(GComponent comp)
         {
+            m_light = comp.GetController("light");
             m_day = (GTextField)comp.GetChild("day");
         }
         public void Dispose(bool disposeTarget = false)
         {
+            m_light = null;
             m_day = null;
             if(disposeTarget && target != null)
             {

+ 36 - 6
GameClient/Assets/Game/HotUpdate/ServerProxy/ActivityAfuGiftProxy.cs

@@ -9,7 +9,6 @@ namespace ET
     {
         protected override async ETTask Run(Session session, S2C_PushActivityLoginInfo message)
         {
-
             var info =  message.ActivityLoginInfo;
             var afuGiftDataManager = ActivityAfuGiftDataManager.Instance;
             afuGiftDataManager.SetIsBuy(info.IsBuy);
@@ -22,7 +21,7 @@ namespace ET
                 afuGiftDataManager.AddSuperReward(superRewardID);
             }
             //EventAgent.DispatchEvent(ConstMessage.NOTICE_PASSPORT_OPEN);
-            //EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
+            EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
             await ETTask.CompletedTask;
         }
     }
@@ -32,14 +31,45 @@ namespace GFGGame
 {
     public class ActivityAfuGiftProxy : MonoBehaviour
     {
-        public static async ETTask<bool> GetAfuGiftInfo()
+        public static async ETTask GetAfuGiftInfo()
         {
             var response =
-                (S2C_GetBattlePassInfo)await MessageHelper.SendToServer(new C2S_GetBattlePassInfo {  });
+                (S2C_GetActivityLoginInfo)await MessageHelper.SendToServer(new C2S_GetActivityLoginInfo {  });
+            if (!(response is { Error: ErrorCode.ERR_Success })) return;
+            var info = response.ActivityLoginInfo;
+            var activityAfuGiftDataManager = ActivityAfuGiftDataManager.Instance;
+            activityAfuGiftDataManager.SetIsBuy(info.IsBuy);
+            foreach(var t in info.FreeRewardStatusList)
+            {
+                activityAfuGiftDataManager.AddNormalReward(t);
+            }
+            foreach (var t in info.PayRewardStatusList)
+            {
+                activityAfuGiftDataManager.AddSuperReward(t);
+            }
+        }
+
+        public static async ETTask<bool> ReqGetReward(bool isPay, int rewardDay)
+        {
+            var response =
+                (S2C_GetActivityLoginReward)await MessageHelper.SendToServer(new C2S_GetActivityLoginReward()
+                { IsPay = isPay, RewardDay = rewardDay });
             if (!(response is { Error: ErrorCode.ERR_Success })) return false;
-            //var responseGetType = response.Type;
+            //奖励弹窗
+            BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.BonusList));
+            var info = response.ActivityLoginInfo;
+            var activityAfuGiftDataManager = ActivityAfuGiftDataManager.Instance;
+            foreach (var t in info.FreeRewardStatusList)
+            {
+                activityAfuGiftDataManager.AddNormalReward(t);
+            }
+            foreach (var t in info.PayRewardStatusList)
+            {
+                activityAfuGiftDataManager.AddSuperReward(t);
+            }
 
-            return true;
+            EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
+            return false;
         }
     }
 

+ 88 - 10
GameClient/Assets/Game/HotUpdate/Views/ActivityAfuGift/ActivityAfuGiftView.cs

@@ -5,6 +5,7 @@ using ET;
 using FairyGUI;
 using System;
 using UI.CommonGame;
+using static GFGGame.ShopSProxy;
 
 namespace GFGGame
 {
@@ -15,7 +16,9 @@ namespace GFGGame
         private struct GetState
         {
             public int rewardID;
-            public bool canGet;
+            public int dayIndex;
+            public bool canGet; 
+            public bool isVip;
         }
 
 
@@ -35,6 +38,7 @@ namespace GFGGame
             viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
 
             _ui.m_btnClose.onClick.Add(Hide);
+            _ui.m_btnGet.onClick.Add(OnClickBtnGet);
 
             // Data
             ActivityAfuGiftDataManager.Instance.InitActivityInfo();
@@ -64,25 +68,33 @@ namespace GFGGame
         protected override void AddEventListener()
         {
             base.AddEventListener();
+            EventAgent.AddEventListener(ConstMessage.RED_CHANGE, UpdateState);
         }
 
         protected override void RemoveEventListener()
         {
             base.RemoveEventListener();
+            EventAgent.RemoveEventListener(ConstMessage.RED_CHANGE, UpdateState);
         }
 
 
         private void InitUI()
         {
-            // 112121
+            _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());
+        }
+
+        private IEnumerator InitProgressWidth()
+        {
+            yield return new WaitForSeconds(0.5f);
             // 根据列表 初始化进度条长度
-            float marginLeft = 147;
+            float marginLeft = 149;
             GProgressBar gProgressBar = _ui.m_panel.m_scrollPane.m_progress;
-            gProgressBar.width = marginLeft + _rewardListUI.width;
+            gProgressBar.width = marginLeft + _rewardListUI.GetChildAt(_rewardListUI.numChildren - 1).position.x - _rewardListUI.GetChildAt(0).position.x;
         }
 
         private float CalculateListWidth(int num, float itemWidth, float columnGap)
@@ -102,27 +114,37 @@ namespace GFGGame
             UI_reward rewardUI = UI_reward.Proxy(item);
             rewardUI.m_day.m_day.SetVar("day", (index + 1).ToString()).FlushVars();
 
+            // 已经到达的日期
+            int passDay = ActivityAfuGiftDataManager.Instance.GetMaxPassDay();
+            int arrive = (index + 1) <= passDay ? 0 : 1;
+            rewardUI.m_day.m_light.SetSelectedIndex(arrive);
+
             int itemNormalId = ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusFreeArr[0][0];
             int itemVipId1 = ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusPayArr[0][0];
             int itemVipId2 = ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusPayArr[1][0];
 
             LoadItem(itemNormalId, rewardUI.m_reward_normal, ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusFreeArr[0][1]);
-            LoadItem(itemVipId1, rewardUI.m_reward_vip1, ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusPayArr[0][1], true, true);
-            LoadItem(itemVipId2, rewardUI.m_reward_vip2, ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusPayArr[1][1], true, true);
+            LoadItem(itemVipId1, rewardUI.m_reward_vip1, ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusPayArr[0][1], true);
+            LoadItem(itemVipId2, rewardUI.m_reward_vip2, ActivityAfuGiftDataManager.Instance.RewardCfgs[index].bonusPayArr[1][1], true);
 
             UI_reward.ProxyEnd();
         }
 
-        private void LoadItem(int id, GObject obj, int num, bool isVip = false, bool isLock = false)
+        private void LoadItem(int id, GObject obj, int num, bool isVip = false)
         {
             ItemCfg itemNormal = ItemCfgArray.Instance.GetCfg(id);
             UI_ComItem comItem = UI_ComItem.Proxy(obj);
             comItem.m_loaIcon.url = ResPathUtil.GetIconPath(itemNormal);
             comItem.m_txtCount.text = num.ToString();
             comItem.m_QualityType.selectedIndex = itemNormal.rarity - 1;
-
             comItem.target.onClick.Add(OnItemClick);
-            comItem.m_Lock.selectedIndex = isLock ? 1 : 0;
+
+            int isLock = 0;
+            if (isVip)
+            {
+                isLock = ActivityAfuGiftDataManager.Instance.GetIsBuy() ? 0 : 1;
+            }
+            comItem.m_Lock.selectedIndex = isLock;
 
             int dayIndex = _rewardListUI.GetChildIndex(obj) + 1;
             // 已经到达的日期
@@ -131,7 +153,9 @@ namespace GFGGame
             comItem.target.data = new GetState
             {
                 rewardID = id,
-                canGet = arrive
+                canGet = arrive,
+                dayIndex = dayIndex,
+                isVip = isVip
             };
             if (arrive)
             {
@@ -173,6 +197,16 @@ namespace GFGGame
 
             if (getState.canGet)
             {
+                // Vip奖励同时领取两个
+                if (getState.isVip)
+                {
+                    int rewardID1 = ActivityAfuGiftDataManager.Instance.RewardCfgs[getState.dayIndex - 1].bonusPayArr[0][1];
+                    int rewardID2 = ActivityAfuGiftDataManager.Instance.RewardCfgs[getState.dayIndex - 1].bonusPayArr[1][1];
+                }
+                else
+                {
+                    int ID = ActivityAfuGiftDataManager.Instance.RewardCfgs[getState.dayIndex - 1].bonusFreeArr[0][1];
+                }
                 //ActivityGlobalSProxy.ReqGetActivityBonus(_activityInfo.ActivityId, getState.rewardID).Coroutine();
             }
             else
@@ -181,5 +215,49 @@ namespace GFGGame
             }
         }
 
+        /// <summary>
+        /// 领取所有奖励按钮
+        /// </summary>
+        private void OnClickBtnGet()
+        {
+            if (!ActivityAfuGiftDataManager.Instance.GetIsBuy())
+            {
+                // 跳转充值画面
+                ReqShopBuy(990005).Coroutine();
+                return;
+            }
+
+            // 一键领取
+            int passDay = ActivityAfuGiftDataManager.Instance.GetMaxPassDay();
+            for(int i = passDay - 1; i >= 0; i++)
+            {
+                int itemNormalId = ActivityAfuGiftDataManager.Instance.RewardCfgs[i].bonusFreeArr[0][0];
+                int itemVipId1 = ActivityAfuGiftDataManager.Instance.RewardCfgs[i].bonusPayArr[0][0];
+                int itemVipId2 = ActivityAfuGiftDataManager.Instance.RewardCfgs[i].bonusPayArr[1][0];
+                if (ActivityAfuGiftDataManager.Instance.CanGetNormalReward(itemNormalId))
+                {
+
+                }
+                if (ActivityAfuGiftDataManager.Instance.CanGetSuperReward(itemVipId1))
+                {
+
+                }
+                if (ActivityAfuGiftDataManager.Instance.CanGetSuperReward(itemVipId2))
+                {
+
+                }
+            }
+        }
+
+        /// <summary>
+        /// 充值,领取东西后调用
+        /// </summary>
+        private void UpdateState()
+        {
+            // 更新底部按钮
+            _ui.m_c1.SetSelectedIndex(ActivityAfuGiftDataManager.Instance.GetIsBuy() ? 1 : 0);
+            // 更新锁 红点状态
+            _rewardListUI.numItems = ActivityAfuGiftDataManager.Instance.RewardCfgs.Count;
+        }
     }
 }

BIN
GameClient/Assets/ResIn/UI/ActivityAFuGift/ActivityAFuGift_atlas0!a.png


BIN
GameClient/Assets/ResIn/UI/ActivityAFuGift/ActivityAFuGift_atlas0.png


BIN
GameClient/Assets/ResIn/UI/ActivityAFuGift/ActivityAFuGift_fui.bytes


BIN
GameClient/Assets/ResIn/UI/Card/Card_fui.bytes


BIN
GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0!a.png


BIN
GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0.png


BIN
GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0_1!a.png


BIN
GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0_1.png


BIN
GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0_2!a.png


BIN
GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0_2.png


BIN
GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0_4!a.png


BIN
GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0_4.png


BIN
GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0_5!a.png


BIN
GameClient/Assets/ResIn/UI/CommonGame/CommonGame_atlas0_5.png


BIN
GameClient/Assets/ResIn/UI/CommonGame/CommonGame_fui.bytes


BIN
GameClient/Assets/ResIn/UI/FieldGuide/FieldGuide_fui.bytes