Răsfoiți Sursa

成就补充进度条和排序修改

huangxiaoyue 1 an în urmă
părinte
comite
ed32d23d36

+ 35 - 7
GameClient/Assets/Game/HotUpdate/Data/TaskDataManager.cs

@@ -101,19 +101,47 @@ namespace GFGGame
             {
                 var stateA = TaskInfosDic[a.id].State == 1 ? 1 : -1;
                 var stateB = TaskInfosDic[b.id].State == 1 ? 1 : -1;
-                if (stateA > stateB) return -1;
-                else if (stateA == stateB) { 
-                    if(a.id > b.id) 
-                        return 1;
-                    else
-                        return -1;
-                }
                 return stateB > stateA ? 1 : TaskInfosDic[a.id].State.CompareTo(TaskInfosDic[b.id].State);
             });
             return cfgs;
         }
 
         /// <summary>
+        /// 获取任务成就列表
+        /// </summary>
+        /// <returns></returns>
+        public List<TaskCfg> GetTaskAchieveCfgs(int taskType)
+        {
+            var cfgs = new List<TaskCfg>();
+
+            TaskType2TaskIdListDic.TryGetValue(taskType, out var taskIds);
+            if (taskIds == null) return cfgs;
+            cfgs.AddRange(taskIds.Select(taskId => TaskCfgArray.Instance.GetCfg(taskId)));
+
+            cfgs.Sort((a, b) =>
+            {
+                var stateA = TaskInfosDic[a.id].State == 1 ? 1 : -1;
+                var stateB = TaskInfosDic[b.id].State == 1 ? 1 : -1;
+                if (stateA > stateB)
+                    return -1;
+                else if(stateA < stateB)
+                    return 1;
+                else {
+                    if (TaskInfosDic[a.id].State.CompareTo(TaskInfosDic[b.id].State) > 0)
+                        return -1;
+                    else if (TaskInfosDic[a.id].State.CompareTo(TaskInfosDic[b.id].State) < 0)
+                        return 1;
+                    else {
+                        if (a.id > b.id)
+                            return 1;
+                        else
+                            return -1;
+                    }
+                }
+            });
+            return cfgs;
+        }
+        /// <summary>
         /// 获取任务列表
         /// </summary>
         /// <returns></returns>

+ 3 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/CommonGame/UI_TaskListItem.cs

@@ -16,6 +16,7 @@ namespace UI.CommonGame
         public UI_Button22 m_GetRewardBt;
         public UI_Button22 m_ComeBt;
         public UI_Button22 m_GetRewardBt_2;
+        public GProgressBar m_taskBar;
         public const string URL = "ui://eg2y0ldplh8v5";
         public const string PACKAGE_NAME = "CommonGame";
         public const string RES_NAME = "TaskListItem";
@@ -72,6 +73,7 @@ namespace UI.CommonGame
             m_GetRewardBt = (UI_Button22)UI_Button22.Create(comp.GetChild("GetRewardBt"));
             m_ComeBt = (UI_Button22)UI_Button22.Create(comp.GetChild("ComeBt"));
             m_GetRewardBt_2 = (UI_Button22)UI_Button22.Create(comp.GetChild("GetRewardBt"));
+            m_taskBar = (GProgressBar)comp.GetChild("taskBar");
         }
         public void Dispose(bool disposeTarget = false)
         {
@@ -87,6 +89,7 @@ namespace UI.CommonGame
             m_ComeBt = null;
             m_GetRewardBt_2.Dispose();
             m_GetRewardBt_2 = null;
+            m_taskBar = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

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

@@ -11,6 +11,7 @@ namespace UI.Task
         public GLoader m_loaBg;
         public GButton m_btnBack;
         public GList m_listAchieveTask;
+        public GTextField m_txtProgress;
         public const string URL = "ui://5mpsibzzaigntob";
         public const string PACKAGE_NAME = "Task";
         public const string RES_NAME = "TaskAchieveDetailUI";
@@ -62,6 +63,7 @@ namespace UI.Task
             m_loaBg = (GLoader)comp.GetChild("loaBg");
             m_btnBack = (GButton)comp.GetChild("btnBack");
             m_listAchieveTask = (GList)comp.GetChild("listAchieveTask");
+            m_txtProgress = (GTextField)comp.GetChild("txtProgress");
         }
         public void Dispose(bool disposeTarget = false)
         {
@@ -69,6 +71,7 @@ namespace UI.Task
             m_loaBg = null;
             m_btnBack = null;
             m_listAchieveTask = null;
+            m_txtProgress = null;
             if(disposeTarget && target != null)
             {
                 target.RemoveFromParent();

+ 26 - 5
GameClient/Assets/Game/HotUpdate/Views/Task/TaskAchieveDetailView.cs

@@ -11,7 +11,7 @@ namespace GFGGame
         private List<TaskCfg> _cfgs = new List<TaskCfg>();
         private int funcType = TaskFuncType.Achievement;
         private List<TaskCfg> _cfgsAll = new List<TaskCfg>();
-
+        public int taskSubType = 0;
         public override void Dispose()
         {
             if (_ui != null)
@@ -43,11 +43,13 @@ namespace GFGGame
         protected override void AddEventListener()
         {
             base.AddEventListener();
+            EventAgent.AddEventListener(ConstMessage.ACHIEVEMENT_TASK_PRO_CHANGED, UpdateProgressValue);
         }
 
         protected override void RemoveEventListener()
         {
             base.RemoveEventListener();
+            EventAgent.RemoveEventListener(ConstMessage.ACHIEVEMENT_TASK_PRO_CHANGED, UpdateProgressValue);
         }
 
         protected override void OnShown()
@@ -62,11 +64,25 @@ namespace GFGGame
             base.OnHide();
         }
 
+        private void UpdateProgressValue()
+        {
+            var taskTypeProList = TaskDataManager.Instance.GetAchievementTaskTypeProList();
+            foreach (var info in taskTypeProList)
+            {
+                if (info.AchievementType == taskSubType + 1)
+                {
+                    _ui.m_txtProgress.text = (info.CompleteTaskNum*100 /info.AllTaskNum) + "%";
+                    break;
+                }
+            }
+        }
+
         private void UpdateTask()   
         {
-            int taskSubType = (int)this.viewData;
+            taskSubType = (int)this.viewData;
             _ui.m_AchieveType.selectedIndex = taskSubType;
-            _cfgsAll = TaskDataManager.Instance.GetTaskCfgs(funcType);
+            UpdateProgressValue();
+            _cfgsAll = TaskDataManager.Instance.GetTaskAchieveCfgs(funcType);
             _cfgs.Clear();
             for (int i= 0; i< _cfgsAll.Count;i++) {
                 if (_cfgsAll[i].achievementType == taskSubType+1)
@@ -81,9 +97,14 @@ namespace GFGGame
             //Áìȡ״̬
             item.m_c1.selectedIndex = TaskDataManager.Instance.GetTaskStateById(_cfgs[index].id);
             item.m_c2.selectedIndex = _cfgs[index].jumpId == "" ? 1 : 0;
+            item.m_c3.selectedIndex = 2;
             item.m_txtDesc.text = TaskDataManager.Instance.GetTaskDesc(_cfgs[index].id);
-            item.m_txtCount.text =
-                $"{TaskDataManager.Instance.GetTaskProgressById(_cfgs[index].id)}/{_cfgs[index].GetTargetCount()}";
+            
+            item.m_taskBar.value = TaskDataManager.Instance.GetTaskProgressById(_cfgs[index].id);
+            item.m_taskBar.max = _cfgs[index].GetTargetCount();
+
+            //item.m_txtCount.text =
+            //    $"{TaskDataManager.Instance.GetTaskProgressById(_cfgs[index].id)}/{_cfgs[index].GetTargetCount()}";
             if (item.m_GetRewardBt.target.data == null)
             {
                 item.m_GetRewardBt.target.onClick.Add(OnBtnGetClick);

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


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


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_atlas0_3!a.png


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


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