瀏覽代碼

Merge branch 'master' of http://10.108.64.190:3000/gfg/client

zhaoyang 2 年之前
父節點
當前提交
11e8b99c63

+ 10 - 3
GameClient/Assets/Game/HotUpdate/Constant/ConstMessage.cs

@@ -122,29 +122,36 @@ namespace GFGGame
         public const string NOTICE_CHAT_MESSAGE = "NOTICE_CHAT_MESSAGE"; //֪ͨ������Ϣ
         public const string ACTIVE_SKILL = "ACTIVE_SKILL"; //���ܼ���
 
-        public const string CONTINUOUS_REBATE_GIFT = "CONTINUOUS_REBATE_GIFT";//领取连续返利礼包
+        public const string CONTINUOUS_REBATE_GIFT = "CONTINUOUS_REBATE_GIFT"; //领取连续返利礼包
         public const string CONTINUOUS_REBATE_GIFT_SHOP_BUY = "CONTINUOUS_REBATE_GIFT_SHOP_BUY";
-        public const string ACTIVITY_LUCKY_BOX = "ACTIVITY_LUCKY_BOX";//通知限时抽奖活动剩余次数
+        public const string ACTIVITY_LUCKY_BOX = "ACTIVITY_LUCKY_BOX"; //通知限时抽奖活动剩余次数
 
         //通知活动移除
         public const string ACTIVITY_REMOVE = "ACTIVITY_REMOVE";
+
         //通知活动添加
         public const string ACTIVITY_ADD = "ACTIVITY_ADD";
+
         // ACTIVITY_REWARD_ADD
         public const string ACTIVITY_REWARD_ADD = "ACTIVITY_REWARD_ADD";
         public static string ACTIVITY_COUNT_VALUE_CHANGE = "ACTIVITY_COUNT_VALUE_CHANGE";
 
         //通知开启通行证
         public const string NOTICE_PASSPORT_OPEN = "NOTICE_PASSPORT_OPEN";
+
         //通知通行证等级变化
         public const string NOTICE_PASSPORT_LEVEL_CHANGE = "NOTICE_PASSPORT_LEVEL_CHANGE";
+
         //通知通行证赛季变更
         public const string NOTICE_PASSPORT_SEASON_CHANGE = "NOTICE_PASSPORT_SEASON_CHANGE";
 
         //通知任务状态变更
         public const string NOTICE_TASK_STATE_CHANGE = "NOTICE_TASK_STATE_CHANGE";
+
+        //通知多个任务状态变更
+        public const string NOTICE_BATCH_TASK_STATE_CHANGE = "NOTICE_BATCH_TASK_STATE_CHANGE";
+
         //引导界面关闭
         public const string GUIDE_VIEW_HIDE = "GUIDE_VIEW_HIDE";
-
     }
 }

+ 9 - 6
GameClient/Assets/Game/HotUpdate/Data/TaskDataManager.cs

@@ -27,7 +27,7 @@ namespace GFGGame
                 : new Dictionary<int, TaskInfo>();
         }
 
-        public void UpdateTaskInfo(int taskId, TaskInfo info)
+        public void UpdateTaskInfo(int taskId, TaskInfo info, bool isNotice = true)
         {
             //获取任务配置
             var cfg = TaskCfgArray.Instance.GetCfg(taskId);
@@ -52,8 +52,11 @@ namespace GFGGame
             {
                 TaskInfosDic[taskId] = info;
             }
-            EventAgent.DispatchEvent(ConstMessage.NOTICE_TASK_STATE_CHANGE, taskId);
-            EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
+            if (isNotice)
+            {
+                EventAgent.DispatchEvent(ConstMessage.NOTICE_TASK_STATE_CHANGE, taskId);
+                EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
+            }
         }
 
         //RemoveTaskInfo
@@ -175,9 +178,9 @@ namespace GFGGame
                     return string.Format(activeRewardCfg.desc, taskCfg.paramsArr[0], taskCfg.paramsArr[1]);
                 case ConstTaskType.FinishStory:
                 case ConstTaskType.FinishInstanceZones:
-                    {
-                        return string.Format(activeRewardCfg.desc, taskCfg.paramsArr[0]);
-                    }
+                {
+                    return string.Format(activeRewardCfg.desc, taskCfg.paramsArr[0]);
+                }
                 default: return string.Format(activeRewardCfg.desc, taskCfg.GetTargetCount());
             }
         }

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

@@ -1,3 +1,4 @@
+using System.Collections.Generic;
 using System.Linq;
 using ET;
 using GFGGame;
@@ -32,6 +33,31 @@ namespace ET
             await ETTask.CompletedTask;
         }
     }
+
+    //通知任务重置
+    public class M2C_TaskResetHandler : AMHandler<M2C_TaskReset>
+    {
+        protected override async ETTask Run(Session session, M2C_TaskReset message)
+        {
+            var changeIds = new List<int>();
+            message.TaskList.ForEach(proto =>
+            {
+                var taskInfo = new TaskInfo
+                {
+                    ID = proto.Id,
+                    State = proto.Status,
+                    Progress = proto.Progress
+                };
+                TaskDataManager.Instance.UpdateTaskInfo(taskInfo.ID, taskInfo, false);
+                changeIds.Add(taskInfo.ID);
+            });
+            //NOTICE_TASK_STATE_CHANGE
+            //NOTICE_BATCH_TASK_STATE_CHANGE
+            EventAgent.DispatchEvent(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, changeIds);
+            EventAgent.DispatchEvent(ConstMessage.RED_CHANGE);
+            await ETTask.CompletedTask;
+        }
+    }
 }
 
 namespace GFGGame

+ 25 - 5
GameClient/Assets/Game/HotUpdate/Views/ActivityDay7/ActivityDay7View.cs

@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using ET;
 using FairyGUI;
 using UI.ActivityDay7;
@@ -75,14 +76,29 @@ namespace GFGGame
             EventAgent.AddEventListener(ConstMessage.ITEM_CHANGED, OnItemChange);
             // ConstMessage.NOTICE_TASK_STATE_CHANGE
             EventAgent.AddEventListener(ConstMessage.NOTICE_TASK_STATE_CHANGE, OnTaskChange);
+            EventAgent.AddEventListener(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, OnTasksChange);
+        }
+
+        private void OnTasksChange(EventContext context)
+        {
+            var taskIds = (List<int>)context.data;
+            foreach (var _ in taskIds.Select(taskId => TaskCfgArray.Instance.GetCfg(taskId))
+                         .Where(taskCfg => taskCfg is { taskType: TaskType.Day7 }))
+            {
+                TaskChange();
+            }
         }
 
         private void OnTaskChange(EventContext context)
         {
             var taskId = (int)context.data;
             var taskCfg = TaskCfgArray.Instance.GetCfg(taskId);
-            if (taskCfg == null) return;
-            if (taskCfg.taskType != TaskType.Day7) return;
+            if (!(taskCfg is { taskType: TaskType.Day7 })) return;
+            TaskChange();
+        }
+
+        private void TaskChange()
+        {
             SetDayList();
             SetTasks();
         }
@@ -93,6 +109,8 @@ namespace GFGGame
             EventAgent.RemoveEventListener(ConstMessage.ITEM_CHANGED, OnItemChange);
             // ConstMessage.NOTICE_TASK_STATE_CHANGE
             EventAgent.RemoveEventListener(ConstMessage.NOTICE_TASK_STATE_CHANGE, OnTaskChange);
+            //NOTICE_BATCH_TASK_STATE_CHANGE
+            EventAgent.RemoveEventListener(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, OnTasksChange);
         }
 
         private void OnItemChange(EventContext context)
@@ -124,7 +142,8 @@ namespace GFGGame
             }
             //设置按钮状态
             item.m_c1.selectedIndex = index == onClickDayIndex ? 0 : 1;
-            RedDotController.Instance.SetComRedDot(item.target, ActivityDay7DataManager.Instance.CheckActivityDay7TaskRewrdCanGetByDay(cfg.days));
+            RedDotController.Instance.SetComRedDot(item.target,
+                ActivityDay7DataManager.Instance.CheckActivityDay7TaskRewrdCanGetByDay(cfg.days));
             UI_ButtonDay.ProxyEnd();
         }
 
@@ -267,7 +286,8 @@ namespace GFGGame
                 var cfgID = cfg.id;
                 var state = ActivityDay7DataManager.Instance.GetActivityDay7RewardState(cfgID);
                 item.m_c2.selectedIndex = state ? 1 : 0;
-                RedDotController.Instance.SetComRedDot(item.target, ActivityDay7DataManager.Instance.CheckActivityDay7RewardCanGet(cfgID));
+                RedDotController.Instance.SetComRedDot(item.target,
+                    ActivityDay7DataManager.Instance.CheckActivityDay7RewardCanGet(cfgID));
                 UI_ExpProcessItem.ProxyEnd();
             });
         }
@@ -286,7 +306,7 @@ namespace GFGGame
             if (!(context.sender is GObject btnGet)) return;
             var activity7DaysCfg = (Activity7DaysCfg)btnGet.data;
             var id = activity7DaysCfg.id;
-            if(!ActivityDay7DataManager.Instance.CheckActivityDay7RewardCanGet(id))
+            if (!ActivityDay7DataManager.Instance.CheckActivityDay7RewardCanGet(id))
             {
                 GoodsItemTipsController.ShowItemTips(activity7DaysCfg.bonusArr[0][0]);
                 return;

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

@@ -1,4 +1,5 @@
 using System.Collections.Generic;
+using System.Linq;
 using ET;
 using FairyGUI;
 using UI.CommonGame;
@@ -56,6 +57,7 @@ namespace GFGGame
             base.AddEventListener();
             EventAgent.AddEventListener(ConstMessage.LIVENESS_CHANGE, UpdateLivenessProcess);
             EventAgent.AddEventListener(ConstMessage.NOTICE_TASK_STATE_CHANGE, OnTaskChange);
+            EventAgent.AddEventListener(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, OnTaskChanges);
         }
 
         protected override void RemoveEventListener()
@@ -63,6 +65,20 @@ namespace GFGGame
             base.RemoveEventListener();
             EventAgent.RemoveEventListener(ConstMessage.LIVENESS_CHANGE, UpdateLivenessProcess);
             EventAgent.RemoveEventListener(ConstMessage.NOTICE_TASK_STATE_CHANGE, OnTaskChange);
+            //NOTICE_BATCH_TASK_STATE_CHANGE
+            EventAgent.RemoveEventListener(ConstMessage.NOTICE_BATCH_TASK_STATE_CHANGE, OnTaskChanges);
+        }
+
+
+        //OnTaskChanges
+        private void OnTaskChanges(EventContext eventContext)
+        {
+            var taskIds = (List<int>)eventContext.data;
+            if (taskIds.Select(taskId => TaskCfgArray.Instance.GetCfg(taskId)).Where(taskCfg => taskCfg != null)
+                .Any(taskCfg => taskCfg.taskType == taskType))
+            {
+                UpdateTask();
+            }
         }
 
         private void OnTaskChange(EventContext eventContext)