Bläddra i källkod

feat 任务UI红点

Jae 2 år sedan
förälder
incheckning
e0cd9539fc

+ 4 - 4
FGUIProject/assets/Task/components/BattlePassRewardItem.xml

@@ -20,13 +20,13 @@
       <gearDisplay controller="c1" pages="1"/>
       <Button title="领取" icon="ui://eg2y0ldpwm603f"/>
     </component>
-    <component id="n11_nd17" name="ContinueBt" src="rv091p" fileName="components/BtnStyle1Big.xml" pkg="eg2y0ldp" xy="822,43" size="204,63">
+    <component id="n11_nd17" name="ContinueBt" src="rv091p" fileName="components/BtnStyle1Big.xml" pkg="eg2y0ldp" xy="822,44" size="204,63">
       <gearDisplay controller="c1" pages="3"/>
       <Button title="继续领取" icon="ui://eg2y0ldpo9gh4k"/>
     </component>
-    <image id="n19_vnby" name="n19" src="nyhm6" fileName="imagesNew/an_qrhd_ylq_db.png" pkg="eg2y0ldp" xy="844,47" group="n21_vnby"/>
-    <text id="n20_vnby" name="n20" xy="926,52" size="88,39" group="n21_vnby" fontSize="28" color="#683c28" text="已领取"/>
-    <group id="n21_vnby" name="n21" xy="844,47" size="233,51" advanced="true">
+    <image id="n19_vnby" name="n19" src="nyhm6" fileName="imagesNew/an_qrhd_ylq_db.png" pkg="eg2y0ldp" xy="800,47" group="n21_vnby"/>
+    <text id="n20_vnby" name="n20" xy="882,52" size="88,39" group="n21_vnby" fontSize="28" color="#683c28" text="已领取"/>
+    <group id="n21_vnby" name="n21" xy="800,47" size="233,51" advanced="true">
       <gearDisplay controller="c1" pages="2"/>
     </group>
     <text id="n15_nd17" name="Level" xy="30,42" size="82,62" font="ui://eg2y0ldpa0cftks" fontSize="40" color="#c48624" align="center" autoSize="none" text="1"/>

+ 1 - 1
FGUIProject/assets/Task/components/BuyBattlePassLevelBt.xml

@@ -5,7 +5,7 @@
     <image id="n0_itts" name="n0" src="a0cf2d" fileName="imagesExport/lm_an.png" pkg="mk0fwx0x" xy="0,0">
       <relation target="" sidePair="width-width,height-height"/>
     </image>
-    <image id="n1_itts" name="n1" src="a0cf2h" fileName="imagesNew/lm_tb.png" pkg="eg2y0ldp" xy="68,15"/>
+    <loader id="n1_itts" name="icon" xy="68,15" size="33,31" url="ui://eg2y0ldpa0cf2h" align="center" vAlign="middle"/>
     <text id="n2_itts" name="title" xy="111,6" size="110,48" fontSize="35" color="#915e15" align="center" vAlign="middle" autoSize="none" text=""/>
   </displayList>
   <Button/>

+ 13 - 0
GameClient/Assets/Game/HotUpdate/Data/BattlePassTaskDataManager.cs

@@ -160,5 +160,18 @@ namespace GFGGame
             }
             return rs;
         }
+
+        public bool GetHadCanGetReward()
+        {
+            var battlePassLevel = GetBattlePassLevel();
+            var isBuy = GetIsBuy();
+            for (var i = 1; i < battlePassLevel; i++)
+            {
+                if (!NormalRewards.Contains(i)) return true;
+                if (!isBuy) continue;
+                if (!SuperRewards.Contains(i)) return true;
+            }
+            return false;
+        }
     }
 }

+ 7 - 1
GameClient/Assets/Game/HotUpdate/Data/DailyTaskDataManager.cs

@@ -1,4 +1,5 @@
 using System.Collections.Generic;
+using System.Linq;
 using ET;
 
 namespace GFGGame
@@ -6,7 +7,6 @@ namespace GFGGame
     public class DailyTaskDataManager : SingletonBase<DailyTaskDataManager>
     {
         private Dictionary<int, int> _livenessBoxInfos = new Dictionary<int, int>();
-        // public Dictionary<int, int> LivenessBoxInfos => _livenessBoxInfos;
 
         public void Clear()
         {
@@ -64,5 +64,11 @@ namespace GFGGame
             var index = cfgs.Length - 1;
             return cfgs[index].count;
         }
+     
+        public bool GetHadGetRewardNum()
+        {
+            //TODO 可以缓存是否有领取的状态
+            return _livenessBoxInfos.Any(t => t.Value == ConstBonusStatus.CAN_GET);
+        }
     }
 }

+ 41 - 23
GameClient/Assets/Game/HotUpdate/Data/RedDotDataManager.cs

@@ -1,4 +1,5 @@
 using System.Collections.Generic;
+using System.Linq;
 using ET;
 
 namespace GFGGame
@@ -19,6 +20,7 @@ namespace GFGGame
             }
             return false;
         }
+
         /// <summary>
         /// 任务
         /// 是否有任务奖励、任务宝箱奖励可领
@@ -26,18 +28,21 @@ namespace GFGGame
         /// <returns></returns>
         public bool GetTaskRed()
         {
-            //TODO
-            // Dictionary<int, TaskInfo> taskInfo = TaskDataManager.TaskInfo;
-            // foreach (int key in taskInfo.Keys)
-            // {
-            //     if (DailyTaskDataManager.Instance.GetTaskStateById(key) == ConstBonusStatus.CAN_GET) return true;
-            // }
-            // Dictionary<int, int> livenessBoxInfos = DailyTaskDataManager.Instance.LivenessBoxInfos;
-            // foreach (int key in livenessBoxInfos.Keys)
-            // {
-            //     if (DailyTaskDataManager.Instance.GetBoxStateById(key) == ConstBonusStatus.CAN_GET) return true;
-            // }
-            return false;
+            //判断活跃奖励是否有可以领取
+            var hadGetRewardNum = DailyTaskDataManager.Instance.GetHadGetRewardNum();
+            if (hadGetRewardNum) return true;
+            var taskInfos = TaskDataManager.Instance.GetTaskInfos(TaskType.Daily);
+            if (taskInfos.Select(taskInfo => taskInfo.Value).Any(info => info.State == ConstBonusStatus.CAN_GET))
+            {
+                return true;
+            }
+            taskInfos = TaskDataManager.Instance.GetTaskInfos(TaskType.BattlePass);
+            if (taskInfos.Select(taskInfo => taskInfo.Value).Any(info => info.State == ConstBonusStatus.CAN_GET))
+            {
+                return true;
+            }
+            //判断是否有通行证奖励可领取
+            return BattlePassTaskDataManager.Instance.GetHadCanGetReward();
         }
 
         /// <summary>
@@ -48,6 +53,7 @@ namespace GFGGame
         {
             return ActivityDataManager.Instance.sevenDayLoginBonusStatus == ConstBonusStatus.CAN_GET;
         }
+
         /// <summary>
         /// 有邮件未读或未领奖励
         /// </summary>
@@ -65,7 +71,7 @@ namespace GFGGame
         /// <returns></returns>
         public bool GetFieldGuideRed()
         {
-            List<int> _suitIds = SuitUtil.GetSuitIdList(false, true, 0, 3);//全部已获得套装按照收集度高排序
+            List<int> _suitIds = SuitUtil.GetSuitIdList(false, true, 0, 3); //全部已获得套装按照收集度高排序
             for (int i = 0; i < _suitIds.Count; i++)
             {
                 int status = DressUpMenuSuitDataManager.GetSuitGuideBonusStatus(_suitIds[i]);
@@ -102,6 +108,7 @@ namespace GFGGame
         {
             return GetFriendApplyRed() || GetFriendGiftRed();
         }
+
         /// <summary>
         /// 是否有好友申请
         /// </summary>
@@ -110,6 +117,7 @@ namespace GFGGame
         {
             return FriendDataManager.Instance.ApplyDatas.Count > 0;
         }
+
         /// <summary>
         /// 是否有好友可领体力
         /// </summary>
@@ -147,6 +155,7 @@ namespace GFGGame
             // }
             return false;
         }
+
         /// <summary>
         /// 田野调查红点
         /// </summary>
@@ -161,6 +170,7 @@ namespace GFGGame
             }
             return false;
         }
+
         /// <summary>
         /// 工作室红点
         /// </summary>
@@ -192,7 +202,8 @@ namespace GFGGame
         /// <returns></returns>
         public bool GetTravelGuideRed()
         {
-            if (TravelDataManager.Instance.ListTravelAreaRewardState == null || TravelDataManager.Instance.ListTravelAreaRewardState.Count == 0) return false;
+            if (TravelDataManager.Instance.ListTravelAreaRewardState == null ||
+                TravelDataManager.Instance.ListTravelAreaRewardState.Count == 0) return false;
             for (int i = 0; i < TravelDataManager.Instance.ListTravelAreaRewardState.Count; i++)
             {
                 if (TravelDataManager.Instance.ListTravelAreaRewardState[i] == ConstBonusStatus.CAN_GET)
@@ -202,6 +213,7 @@ namespace GFGGame
             }
             return false;
         }
+
         /// <summary>
         /// 千山万水-图鉴区域红点
         /// </summary>
@@ -209,9 +221,9 @@ namespace GFGGame
         /// <returns></returns>
         public bool GetTravelGuideAreaRed(int areaId)
         {
-            if (TravelDataManager.Instance.ListTravelAreaRewardState == null || TravelDataManager.Instance.ListTravelAreaRewardState.Count == 0) return false;
+            if (TravelDataManager.Instance.ListTravelAreaRewardState == null ||
+                TravelDataManager.Instance.ListTravelAreaRewardState.Count == 0) return false;
             return TravelDataManager.Instance.GetGuideRewardStateByAreaId(areaId) == ConstBonusStatus.CAN_GET;
-
         }
 
         /// <summary>
@@ -222,6 +234,7 @@ namespace GFGGame
         {
             return RoleInfoManager.Instance.newHeadDatas.Count > 0;
         }
+
         /// <summary>
         /// 头像-获得新头像框红点
         /// </summary>
@@ -253,12 +266,13 @@ namespace GFGGame
         /// <returns></returns>
         public bool GetCardSkillRed(int skillId)
         {
-
             PassivitySkillCfg skillCfg = PassivitySkillCfgArray.Instance.GetCfg(skillId);
             int skillLv = SkillDataManager.Instance.GetCardSkillLv(skillCfg.cardId, skillId);
 
-            PassivitySkillLvlCfg skillLvlCfg = PassivitySkillLvlCfgArray.Instance.GetCfgByskilllvlAndskillId(skillLv, skillId);
-            PassivitySkillLvlCfg nextSkillLvlCfg = PassivitySkillLvlCfgArray.Instance.GetCfgByskilllvlAndskillId(skillLv + 1, skillId);
+            PassivitySkillLvlCfg skillLvlCfg =
+                PassivitySkillLvlCfgArray.Instance.GetCfgByskilllvlAndskillId(skillLv, skillId);
+            PassivitySkillLvlCfg nextSkillLvlCfg =
+                PassivitySkillLvlCfgArray.Instance.GetCfgByskilllvlAndskillId(skillLv + 1, skillId);
             if (nextSkillLvlCfg == null || skillLvlCfg.materiarsArr.Length == 0) return false;
             long itemHas = ItemDataManager.GetItemNum(skillLvlCfg.materiarsArr[0][0]);
             int itemNeed = skillLvlCfg.materiarsArr[0][1];
@@ -267,6 +281,7 @@ namespace GFGGame
             int costNeed = skillLvlCfg.costNum;
             return itemHas >= itemNeed && costHas >= costNeed;
         }
+
         //卡牌-卡牌升星奖励状态
         public bool GetCardStarReward(int cardId)
         {
@@ -274,10 +289,11 @@ namespace GFGGame
             List<CardStarCfg> cardStarCfgs = CardStarCfgArray.Instance.GetCfgsBycardId(cardId);
             for (int i = 0; i < cardStarCfgs.Count; i++)
             {
-                if (cardStarCfgs[i].rewardsArr.Length > 0 && cardData.starRewardsState.ContainsKey(cardStarCfgs[i].starLvl) && cardData.starRewardsState[cardStarCfgs[i].starLvl] == ConstBonusStatus.CAN_GET) return true;
+                if (cardStarCfgs[i].rewardsArr.Length > 0 &&
+                    cardData.starRewardsState.ContainsKey(cardStarCfgs[i].starLvl) &&
+                    cardData.starRewardsState[cardStarCfgs[i].starLvl] == ConstBonusStatus.CAN_GET) return true;
             }
             return false;
-
         }
 
         /// <summary>
@@ -310,11 +326,13 @@ namespace GFGGame
 
             for (int i = 1; i < vipCfgs.Length; i++)
             {
-                bool isGet = MathHelper.isBitSet(GameGlobal.myNumericComponent.GetAsInt(NumericType.VipGetStatus), vipCfgs[i].id);
+                bool isGet = MathHelper.isBitSet(GameGlobal.myNumericComponent.GetAsInt(NumericType.VipGetStatus),
+                    vipCfgs[i].id);
                 if (!isGet && RoleDataManager.vipLv >= vipCfgs[i].id) return true;
             }
 
-            return GameGlobal.myNumericComponent.GetAsInt(NumericType.VipWeekGetStatus) == 0 && RoleDataManager.vipLv > 0;
+            return GameGlobal.myNumericComponent.GetAsInt(NumericType.VipWeekGetStatus) == 0 &&
+                   RoleDataManager.vipLv > 0;
         }
     }
 }

+ 4 - 0
GameClient/Assets/Game/HotUpdate/Views/Task/BuyBattlePassLevelView.cs

@@ -29,6 +29,10 @@ namespace GFGGame
             _ui.m_CloseBtn.onClick.Add(Hide);
             // clickBlankToClose = false;
             _ui.m_Rewards.itemRenderer = SpecialRewardRender;
+            var globalCfgBattlePassLevelConsumeArr = GlobalCfgArray.globalCfg.BattlePassLevelConsumeArr;
+            _ui.m_AddLevelBtn.icon =
+                ResPathUtil.GetCommonGameResPath(ItemCfgArray.Instance.GetCfg(globalCfgBattlePassLevelConsumeArr[0][0])
+                    .res);
             _ui.m_Add.onClick.Add(OnAddLevel);
             _ui.m_Reduce.onClick.Add(OnReduceLevel);
             _ui.m_AddLevelBtn.onClick.Add(OnRequestAddLevel);

BIN
GameClient/Assets/ResIn/UI/Task/Task_fui.bytes