Эх сурвалжийг харах

成就进度条协议接入,成就红点

huangxiaoyue 1 жил өмнө
parent
commit
3134cff57e

+ 5 - 1
GameClient/Assets/Game/HotUpdate/Constant/ConstMessage.cs

@@ -156,8 +156,12 @@ namespace GFGGame
         //每日重置
         public const string RESET_DAILY_DATA = "RESET_DAILY_DATA";
 
+        //摘星免费时间
         public const string LUCKY_BOX_FREE_TIME_CHANGED = "LUCKY_BOX_FREE_TIME_CHANGED";
-        
+
+        //成就进度条
+        public const string ACHIEVEMENT_TASK_PRO_CHANGED = "ACHIEVEMENT_TASK_PRO_CHANGED";
+
         //MainView to 同步刷新特惠礼包 限时礼包倒计时
         public const string LUCKY_BOX_TIME = "LUCKY_BOX_TIME";
     }

+ 4 - 0
GameClient/Assets/Game/HotUpdate/Data/RedDotDataManager.cs

@@ -43,6 +43,10 @@ namespace GFGGame
             {
                 return true;
             }
+            if (TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.Achievement))
+            {
+                return true;
+            }
             //判断是否有通行证奖励可领取
             return BattlePassTaskDataManager.Instance.GetHadCanGetReward();
         }

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

@@ -204,6 +204,19 @@ namespace GFGGame
             return false;
         }
 
+        public bool CheckTaskSubRewardCanGet(int taskFuncType, int taskFuncSub)
+        {
+            var _cfgsAll = TaskDataManager.Instance.GetTaskCfgs(taskFuncType);
+            foreach (var info in _cfgsAll)
+            {
+                if (info.achievementType == taskFuncSub + 1) {
+                    if (TaskDataManager.Instance.GetTaskStateById(info.id) == 1)
+                        return true;
+                }
+            }
+            return false;
+        }
+
         public void Clear()
         {
             TaskInfosDic.Clear();
@@ -218,5 +231,16 @@ namespace GFGGame
                 ? taskCfg.rewardsArr
                 : taskCfg.activityRewardsArr;
         }
+
+        private List<AchievementTaskTypePro> saveAchievementTaskTypeProList;
+        public void SaveAchievementTaskTypeProList(List<AchievementTaskTypePro> AchievementTaskTypeProList)
+        {
+            saveAchievementTaskTypeProList = AchievementTaskTypeProList;
+        }
+
+        public List<AchievementTaskTypePro> GetAchievementTaskTypeProList()
+        {
+            return saveAchievementTaskTypeProList;
+        }
     }
 }

+ 3 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Task/UI_AchieveItem.cs

@@ -9,6 +9,7 @@ namespace UI.Task
         public GComponent target;
         public Controller m_AchieveType;
         public GTextField m_txtName;
+        public GProgressBar m_achieveBar;
         public const string URL = "ui://5mpsibzzaignto5";
         public const string PACKAGE_NAME = "Task";
         public const string RES_NAME = "AchieveItem";
@@ -58,11 +59,13 @@ namespace UI.Task
         {
             m_AchieveType = comp.GetController("AchieveType");
             m_txtName = (GTextField)comp.GetChild("txtName");
+            m_achieveBar = (GProgressBar)comp.GetChild("achieveBar");
         }
         public void Dispose(bool disposeTarget = false)
         {
             m_AchieveType = null;
             m_txtName = null;
+            m_achieveBar = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 14 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/TaskSProxy.cs

@@ -136,5 +136,19 @@ namespace GFGGame
             EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
             return true;
         }
+
+        public static async ETTask<bool> GetTaskTypePro()
+        {
+            //C2M_GetTaskBonus
+            var response = (M2C_GetAchievementTaskTypePro)await MessageHelper.SendToServer(new C2M_GetAchievementTaskTypePro {});
+            if (!(response is { Error: ErrorCode.ERR_Success })) return false;
+            if (response.AchievementTaskTypeProList != null)
+            {
+                TaskDataManager.Instance.SaveAchievementTaskTypeProList(response.AchievementTaskTypeProList);
+                EventAgent.DispatchEvent(ConstMessage.ACHIEVEMENT_TASK_PRO_CHANGED);
+            }
+
+            return true;
+        }
     }
 }

+ 26 - 1
GameClient/Assets/Game/HotUpdate/Views/Task/TaskAchieveView.cs

@@ -48,17 +48,31 @@ namespace GFGGame
         protected override void AddEventListener()
         {
             base.AddEventListener();
+            EventAgent.AddEventListener(ConstMessage.RED_CHANGE, UpdateInfo);
+            EventAgent.AddEventListener(ConstMessage.ACHIEVEMENT_TASK_PRO_CHANGED, UpdateRewardState);
         }
 
         protected override void RemoveEventListener()
         {
             base.RemoveEventListener();
+            EventAgent.RemoveEventListener(ConstMessage.RED_CHANGE, UpdateInfo);
+            EventAgent.RemoveEventListener(ConstMessage.ACHIEVEMENT_TASK_PRO_CHANGED, UpdateRewardState);
+        }
+
+        private void UpdateRewardState()
+        {
+            _ui.m_listAchieveItem.numItems = 6;
         }
 
         protected override void OnShown()
         {
             base.OnShown();
-            _ui.m_listAchieveItem.numItems = 6;
+            UpdateInfo();
+        }
+        protected async void UpdateInfo()
+        {
+            var result = await TaskSProxy.GetTaskTypePro();
+            if (!result) return;
         }
 
         protected override void OnHide()
@@ -80,6 +94,17 @@ namespace GFGGame
             }
             listItem.target.data = index;
 
+            var taskTypeProList = TaskDataManager.Instance.GetAchievementTaskTypeProList();
+            foreach (var info in taskTypeProList) {
+                if (info.AchievementType == index+1) {
+                    listItem.m_achieveBar.max = info.AllTaskNum;
+                    listItem.m_achieveBar.value = info.CompleteTaskNum;
+                    break;
+                }
+            }
+
+            RedDotController.Instance.SetComRedDot(listItem.target, TaskDataManager.Instance.CheckTaskSubRewardCanGet(TaskFuncType.Achievement, index),"",-10,60);
+
             UI_AchieveItem.ProxyEnd();
         }
     }

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

@@ -102,6 +102,7 @@ namespace GFGGame
             showRedPoint = TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.Weekly)
                 || DailyTaskDataManager.Instance.GetHadGetRewardNum(TaskFuncType.Weekly);
             RedDotController.Instance.SetComRedDot(_ui.m_btnWeekly, showRedPoint);
+            RedDotController.Instance.SetComRedDot(_ui.m_btnAchieve, TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.Achievement));
         }
 
     }

BIN
GameClient/Assets/ResIn/UI/Task/Task_atlas0!a.png


BIN
GameClient/Assets/ResIn/UI/Task/Task_atlas0.png


BIN
GameClient/Assets/ResIn/UI/Task/Task_atlas0_1!a.png


BIN
GameClient/Assets/ResIn/UI/Task/Task_atlas0_1.png


BIN
GameClient/Assets/ResIn/UI/Task/Task_atlas0_2!a.png


BIN
GameClient/Assets/ResIn/UI/Task/Task_atlas0_2.png


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