guodong 2 gadi atpakaļ
vecāks
revīzija
22c722a08b

+ 2 - 2
FGUIProject/assets/Task/CombTaskUI.xml

@@ -25,10 +25,10 @@
       <gearText controller="c1" pages="0" values="每天5:00刷新" default="周一5:00刷新"/>
     </text>
     <image id="n17_ids4" name="n17" src="uxxstm8" fileName="images/yeqian_db.png" xy="302,804" size="491,72"/>
-    <component id="n25_ids4" name="n25" src="ids44e" fileName="components/TabButton.xml" xy="294,805" group="n27_ids4">
+    <component id="n25_ids4" name="btnDailyTask" src="ids44e" fileName="components/TabButton.xml" xy="294,805" group="n27_ids4">
       <Button checked="true" controller="c1" page="0"/>
     </component>
-    <component id="n26_ids4" name="n26" src="ids44e" fileName="components/TabButton.xml" xy="555,805" group="n27_ids4">
+    <component id="n26_ids4" name="btnBattlePassTask" src="ids44e" fileName="components/TabButton.xml" xy="555,805" group="n27_ids4">
       <Button title="织造任务" controller="c1" page="1"/>
     </component>
     <group id="n27_ids4" name="n27" xy="294,805" size="522,72" advanced="true" layout="hz" excludeInvisibles="true"/>

+ 2 - 2
FGUIProject/assets/Task/TaskUI.xml

@@ -15,10 +15,10 @@
     <component id="n6_wet2" name="btnBack" src="9xlo8" fileName="components/BtnBack.xml" pkg="eg2y0ldp" xy="48,153">
       <relation target="" sidePair="left-left,top-top"/>
     </component>
-    <component id="n15_fqor" name="n15" src="ojlzr" fileName="components/BtnTab.xml" pkg="eg2y0ldp" xy="246,165" group="n17_fqor">
+    <component id="n15_fqor" name="btnTask" src="ojlzr" fileName="components/BtnTab.xml" pkg="eg2y0ldp" xy="246,165" group="n17_fqor">
       <Button title="今日任务" controller="c1" page="0"/>
     </component>
-    <component id="n16_fqor" name="n16" src="ojlzr" fileName="components/BtnTab.xml" pkg="eg2y0ldp" xy="536,165" group="n17_fqor">
+    <component id="n16_fqor" name="btnBattlePass" src="ojlzr" fileName="components/BtnTab.xml" pkg="eg2y0ldp" xy="536,165" group="n17_fqor">
       <Button title="锦罗织造" controller="c1" page="1"/>
     </component>
     <group id="n17_fqor" name="n17" xy="246,165" size="580,70" advanced="true" layout="hz" excludeInvisibles="true"/>

+ 10 - 1
GameClient/Assets/Game/HotUpdate/Data/BattlePassTaskDataManager.cs

@@ -6,6 +6,9 @@ namespace GFGGame
 {
     public class BattlePassTaskDataManager : SingletonBase<BattlePassTaskDataManager>
     {
+        //是否初始化服务器数据
+        private bool initedFromServer;
+
         //通行证赛季Id
         private int SeasonId;
 
@@ -33,6 +36,7 @@ namespace GFGGame
         public void AddNormalReward(int levelId)
         {
             NormalRewards.Add(levelId);
+            initedFromServer = true;
         }
 
         public void AddSuperReward(int levelId)
@@ -164,9 +168,13 @@ namespace GFGGame
 
         public bool GetHadCanGetReward()
         {
+            if(!initedFromServer)
+            {
+                return false;
+            }
             var battlePassLevel = GetBattlePassLevel();
             var isBuy = GetIsBuy();
-            for (var i = 1; i < battlePassLevel; i++)
+            for (var i = 1; i <= battlePassLevel; i++)
             {
                 if (!NormalRewards.Contains(i)) return true;
                 if (!isBuy) continue;
@@ -184,6 +192,7 @@ namespace GFGGame
             NormalRewards.Clear();
             SuperRewards.Clear();
             tempItems.Clear();
+            initedFromServer = false;
         }
     }
 }

+ 6 - 5
GameClient/Assets/Game/HotUpdate/Data/RedDotDataManager.cs

@@ -30,14 +30,15 @@ namespace GFGGame
         {
             //判断活跃奖励是否有可以领取
             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))
+            if (hadGetRewardNum)
             {
                 return true;
             }
-            taskInfos = TaskDataManager.Instance.GetTaskInfos(TaskType.BattlePass);
-            if (taskInfos.Select(taskInfo => taskInfo.Value).Any(info => info.State == ConstBonusStatus.CAN_GET))
+            if(TaskDataManager.Instance.CheckTaskRewardCanGet(TaskType.Daily))
+            {
+                return true;
+            }
+            if (TaskDataManager.Instance.CheckTaskRewardCanGet(TaskType.BattlePass))
             {
                 return true;
             }

+ 10 - 0
GameClient/Assets/Game/HotUpdate/Data/TaskDataManager.cs

@@ -178,6 +178,16 @@ namespace GFGGame
             }
         }
 
+        public bool CheckTaskRewardCanGet(int taskType)
+        {
+            var taskInfos = TaskDataManager.Instance.GetTaskInfos(taskType);
+            if (taskInfos.Select(taskInfo => taskInfo.Value).Any(info => info.State == ConstBonusStatus.CAN_GET))
+            {
+                return true;
+            }
+            return false;
+        }
+
         /// <summary>
         /// 任务界面跳转
         /// </summary>

+ 6 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Task/UI_CombTaskUI.cs

@@ -10,6 +10,8 @@ namespace UI.Task
         public Controller m_c1;
         public UI_LivenessRewardProcess m_LivenessProcess;
         public GList m_TaskList;
+        public GButton m_btnDailyTask;
+        public GButton m_btnBattlePassTask;
         public GButton m_GetAll;
         public const string URL = "ui://5mpsibzzfqor2p";
         public const string PACKAGE_NAME = "Task";
@@ -61,6 +63,8 @@ namespace UI.Task
             m_c1 = comp.GetController("c1");
             m_LivenessProcess = (UI_LivenessRewardProcess)UI_LivenessRewardProcess.Create(comp.GetChild("LivenessProcess"));
             m_TaskList = (GList)comp.GetChild("TaskList");
+            m_btnDailyTask = (GButton)comp.GetChild("btnDailyTask");
+            m_btnBattlePassTask = (GButton)comp.GetChild("btnBattlePassTask");
             m_GetAll = (GButton)comp.GetChild("GetAll");
         }
         public void Dispose(bool disposeTarget = false)
@@ -69,6 +73,8 @@ namespace UI.Task
             m_LivenessProcess.Dispose();
             m_LivenessProcess = null;
             m_TaskList = null;
+            m_btnDailyTask = null;
+            m_btnBattlePassTask = null;
             m_GetAll = null;
             if(disposeTarget && target != null)
             {

+ 6 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Task/UI_TaskUI.cs

@@ -11,6 +11,8 @@ namespace UI.Task
         public GLoader m_loaBg;
         public GComponent m_comValueBar;
         public GButton m_btnBack;
+        public GButton m_btnTask;
+        public GButton m_btnBattlePass;
         public const string URL = "ui://5mpsibzzfqor2n";
         public const string PACKAGE_NAME = "Task";
         public const string RES_NAME = "TaskUI";
@@ -62,6 +64,8 @@ namespace UI.Task
             m_loaBg = (GLoader)comp.GetChild("loaBg");
             m_comValueBar = (GComponent)comp.GetChild("comValueBar");
             m_btnBack = (GButton)comp.GetChild("btnBack");
+            m_btnTask = (GButton)comp.GetChild("btnTask");
+            m_btnBattlePass = (GButton)comp.GetChild("btnBattlePass");
         }
         public void Dispose(bool disposeTarget = false)
         {
@@ -69,6 +73,8 @@ namespace UI.Task
             m_loaBg = null;
             m_comValueBar = null;
             m_btnBack = null;
+            m_btnTask = null;
+            m_btnBattlePass = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 2 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/BattlePassTaskSProxy.cs

@@ -16,6 +16,7 @@ namespace ET
             }
             battlePassTaskDataManager.SetIsBuy(message.IsBuy);
             EventAgent.DispatchEvent(ConstMessage.NOTICE_PASSPORT_OPEN);
+            EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
             await ETTask.CompletedTask;
         }
     }
@@ -98,6 +99,7 @@ namespace GFGGame
                 bonusList.AddRange(ItemUtil.CreateItemDataList(passCfgBonusSuperArr));
                 BattlePassTaskDataManager.Instance.AddSuperReward(level);
             }
+            EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
             BonusController.TryShowBonusList(bonusList);
             return true;
         }

+ 1 - 0
GameClient/Assets/Game/HotUpdate/Views/Task/BattlePassTaskView.cs

@@ -221,6 +221,7 @@ namespace GFGGame
         private void SetBtnState(UI_BattlePassRewardItem item, int id, int state)
         {
             item.m_c1.selectedIndex = state;
+            RedDotController.Instance.SetComRedDot(item.m_GetRewardBt, state == 1);
             if (item.m_GetRewardBt.data == null)
             {
                 item.m_GetRewardBt.onClick.Add(OnBtnGetClick);

+ 16 - 5
GameClient/Assets/Game/HotUpdate/Views/Task/CombTaskView.cs

@@ -53,12 +53,14 @@ namespace GFGGame
 
         protected override void AddEventListener()
         {
+            base.AddEventListener();
             EventAgent.AddEventListener(ConstMessage.LIVENESS_CHANGE, UpdateLivenessProcess);
             EventAgent.AddEventListener(ConstMessage.NOTICE_TASK_STATE_CHANGE, OnTaskChange);
         }
 
         protected override void RemoveEventListener()
         {
+            base.RemoveEventListener();
             EventAgent.RemoveEventListener(ConstMessage.LIVENESS_CHANGE, UpdateLivenessProcess);
             EventAgent.RemoveEventListener(ConstMessage.NOTICE_TASK_STATE_CHANGE, OnTaskChange);
         }
@@ -101,24 +103,30 @@ namespace GFGGame
             {
                 var boxId = i + 1;
                 var state = DailyTaskDataManager.Instance.GetBoxStateById(boxId);
+                UI_LinessRewardProcessItemBt rewardBox = null;
                 switch (boxId)
                 {
                     case 1:
-                        _ui.m_LivenessProcess.m_Reward20.m_c1.selectedIndex = state;
+                        rewardBox = _ui.m_LivenessProcess.m_Reward20;
                         break;
                     case 2:
-                        _ui.m_LivenessProcess.m_Reward40.m_c1.selectedIndex = state;
+                        rewardBox = _ui.m_LivenessProcess.m_Reward40;
                         break;
                     case 3:
-                        _ui.m_LivenessProcess.m_Reward60.m_c1.selectedIndex = state;
+                        rewardBox = _ui.m_LivenessProcess.m_Reward60;
                         break;
                     case 4:
-                        _ui.m_LivenessProcess.m_Reward80.m_c1.selectedIndex = state;
+                        rewardBox = _ui.m_LivenessProcess.m_Reward80;
                         break;
                     case 5:
-                        _ui.m_LivenessProcess.m_Reward100.m_c1.selectedIndex = state;
+                        rewardBox = _ui.m_LivenessProcess.m_Reward100;
                         break;
                 }
+                if(rewardBox != null)
+                {
+                    rewardBox.m_c1.selectedIndex = state;
+                    RedDotController.Instance.SetComRedDot(rewardBox.target, state == 1);
+                }
             }
         }
 
@@ -127,6 +135,8 @@ namespace GFGGame
         {
             _cfgs = TaskDataManager.Instance.GetTaskCfgs(taskType);
             _ui.m_TaskList.numItems = _cfgs.Count;
+            RedDotController.Instance.SetComRedDot(_ui.m_btnDailyTask, TaskDataManager.Instance.CheckTaskRewardCanGet(TaskType.Daily));
+            RedDotController.Instance.SetComRedDot(_ui.m_btnBattlePassTask, TaskDataManager.Instance.CheckTaskRewardCanGet(TaskType.BattlePass));
         }
 
         private void TaskItemRender(int index, GObject obj)
@@ -154,6 +164,7 @@ namespace GFGGame
             }
             item.m_listTaskReward.data = _cfgs[index].rewardsArr;
             item.m_listTaskReward.numItems = _cfgs[index].rewardsArr.Length;
+            RedDotController.Instance.SetComRedDot(item.m_GetRewardBt, item.m_c1.selectedIndex == 1);
             UI_TaskListItem.ProxyEnd();
         }
 

+ 26 - 0
GameClient/Assets/Game/HotUpdate/Views/Task/TaskView.cs

@@ -1,3 +1,4 @@
+using FairyGUI;
 using UI.Task;
 
 namespace GFGGame
@@ -45,11 +46,24 @@ namespace GFGGame
             ViewManager.GoBackFrom(typeof(TaskView).FullName);
         }
 
+        protected override void AddEventListener()
+        {
+            base.AddEventListener();
+            EventAgent.AddEventListener(ConstMessage.RED_CHANGE, UpdateRedPoint);
+        }
+
+        protected override void RemoveEventListener()
+        {
+            base.RemoveEventListener();
+            EventAgent.RemoveEventListener(ConstMessage.RED_CHANGE, UpdateRedPoint);
+        }
+
         protected override void OnShown()
         {
             base.OnShown();
             _valueBarController.OnShown();
             _ui.m_c1.selectedIndex = viewData == null ? 1 : (int)(viewData as object[])?[0]!;
+            UpdateRedPoint();
         }
 
         protected override void OnHide()
@@ -57,6 +71,7 @@ namespace GFGGame
             base.OnHide();
             _valueBarController.OnHide();
             _ui.m_c1.selectedIndex = 0;
+            UpdateRedPoint();
         }
 
         private void OnCtrlChange()
@@ -75,5 +90,16 @@ namespace GFGGame
 
             viewData = null;
         }
+
+        private void UpdateRedPoint()
+        {
+            bool showRedPoint = TaskDataManager.Instance.CheckTaskRewardCanGet(TaskType.Daily) 
+                || TaskDataManager.Instance.CheckTaskRewardCanGet(TaskType.BattlePass)
+                || DailyTaskDataManager.Instance.GetHadGetRewardNum();
+            RedDotController.Instance.SetComRedDot(_ui.m_btnTask, showRedPoint);
+            showRedPoint = BattlePassTaskDataManager.Instance.GetHadCanGetReward();
+            RedDotController.Instance.SetComRedDot(_ui.m_btnBattlePass, showRedPoint);
+        }
+
     }
 }

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