瀏覽代碼

Merge branch 'master' into zoya

zhaoyang 2 年之前
父節點
當前提交
260e5e52ba

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

@@ -131,6 +131,7 @@ namespace GFGGame
         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";

+ 8 - 5
GameClient/Assets/Game/HotUpdate/Data/ActivityDay7DataManager.cs

@@ -6,7 +6,9 @@ namespace GFGGame
     {
         public int GetActivityDay7Day()
         {
-            return GameGlobal.myNumericComponent.GetAsInt(NumericType.Day7Activity);
+            //获取7日任务活动
+            var activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfoOneByType(ActivityType.Day7);
+            return activityInfo == null ? 0 : TimeUtil.GetDayByTime(activityInfo.StartTime, activityInfo.EndTime);
         }
 
         public long GetScore()
@@ -23,14 +25,15 @@ namespace GFGGame
 
         public bool CheckOpen()
         {
-            return GetEndTime() > TimeHelper.ServerNow();
+            var activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfoOneByType(ActivityType.Day7);
+            return activityInfo != null && activityInfo.StartTime <= TimeHelper.ServerNow() &&
+                   activityInfo.EndTime > TimeHelper.ServerNow();
         }
 
         public long GetEndTime()
         {
-            return TimeUtil.TodayRestTime() +
-                   (GlobalCfgArray.globalCfg.Activity7DaysLastTime - GetActivityDay7Day() + 1)
-                   * TimeUtil.SECOND_PER_DAY * 1000;
+            var activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfoOneByType(ActivityType.Day7);
+            return activityInfo.EndTime;
         }
     }
 }

+ 34 - 15
GameClient/Assets/Game/HotUpdate/Data/ActivityGlobalDataManager.cs

@@ -7,52 +7,55 @@ namespace GFGGame
 {
     public class ActivityInfo
     {
-        public int activityId;
+        public int ActivityId;
 
-        public long startTime;
+        public long StartTime;
 
-        public long endTime;
+        public long EndTime;
 
         //已经领取的奖励
         public List<int> GetRewards = new List<int>();
+
+        //计数值
+        public long CountValue;
     }
 
     public class ActivityGlobalDataManager : SingletonBase<ActivityGlobalDataManager>
     {
-        private Dictionary<int, ActivityInfo> activityInfos = new Dictionary<int, ActivityInfo>();
+        private readonly Dictionary<int, ActivityInfo> activityInfos = new Dictionary<int, ActivityInfo>();
 
-        private Dictionary<int, List<int>> activityInfosByType = new Dictionary<int, List<int>>();
+        private readonly Dictionary<int, List<int>> activityInfosByType = new Dictionary<int, List<int>>();
 
         public void Clear()
         {
             activityInfos.Clear();
             activityInfosByType.Clear();
         }
-        
+
         //添加活动数据
         public void AddActivityInfo(ActivityInfo activityInfo)
         {
             if (activityInfo == null) return;
-            if (activityInfos.ContainsKey(activityInfo.activityId)) return;
-            activityInfos.Add(activityInfo.activityId, activityInfo);
+            if (activityInfos.ContainsKey(activityInfo.ActivityId)) return;
+            activityInfos.Add(activityInfo.ActivityId, activityInfo);
 
-            ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.activityId);
+            ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId);
             if (!activityInfosByType.ContainsKey(activityOpenCfg.type))
             {
                 activityInfosByType.Add(activityOpenCfg.type, new List<int>());
             }
-            activityInfosByType[activityOpenCfg.type].Add(activityInfo.activityId);
+            activityInfosByType[activityOpenCfg.type].Add(activityInfo.ActivityId);
             //ACTIVITY_ADD
-            EventAgent.DispatchEvent(ConstMessage.ACTIVITY_ADD, activityInfo.activityId);
-            var remainTime = activityInfo.endTime - TimeHelper.ServerNow();
+            EventAgent.DispatchEvent(ConstMessage.ACTIVITY_ADD, activityInfo.ActivityId);
+            var remainTime = activityInfo.EndTime - TimeHelper.ServerNow();
             if (remainTime > 0)
             {
-                Timers.inst.Add(activityInfo.endTime - TimeHelper.ServerNow(), 1, ClientRemoveActivityInfo,
-                    activityInfo.activityId);
+                Timers.inst.Add(activityInfo.EndTime - TimeHelper.ServerNow(), 1, ClientRemoveActivityInfo,
+                    activityInfo.ActivityId);
             }
             else
             {
-                ClientRemoveActivityInfo(activityInfo.activityId);
+                ClientRemoveActivityInfo(activityInfo.ActivityId);
             }
         }
 
@@ -93,6 +96,14 @@ namespace GFGGame
             return activityInfoIds.Select(GetActivityInfo).Where(activityInfo => activityInfo != null).ToList();
         }
 
+        //获取活动数据根据类型
+        public ActivityInfo GetActivityInfoOneByType(int activityType)
+        {
+            var activityInfoIds = GetActivityInfoIdsByType(activityType);
+            return activityInfoIds.Select(GetActivityInfo).FirstOrDefault(activityInfo =>
+                activityInfo != null && activityInfo.EndTime <= TimeHelper.ServerNow());
+        }
+
         //添加活动奖励获取数据
         public void AddActivityRewardInfo(int activityId, int rewardId)
         {
@@ -102,5 +113,13 @@ namespace GFGGame
             activityInfo.GetRewards.Add(rewardId);
             EventAgent.DispatchEvent(ConstMessage.ACTIVITY_REWARD_ADD, activityId);
         }
+
+        public void SetActivityCountValue(int activityId, long countValue)
+        {
+            if (!activityInfos.ContainsKey(activityId)) return;
+            var activityInfo = activityInfos[activityId];
+            activityInfo.CountValue = countValue;
+            EventAgent.DispatchEvent(ConstMessage.ACTIVITY_COUNT_VALUE_CHANGE, activityId);
+        }
     }
 }

+ 10 - 10
GameClient/Assets/Game/HotUpdate/Data/LimitedTimeGiftBoxDataManager.cs

@@ -32,9 +32,9 @@ namespace GFGGame
             foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(
                          ActivityType.XSLB1))
             {
-                if (activityInfo.endTime >= TimeInfo.Instance.ServerNow())
+                if (activityInfo.EndTime >= TimeInfo.Instance.ServerNow())
                 {
-                    ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.activityId);
+                    ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId);
                     var paramsArr = activityOpenCfg.paramsArr;
                     Array.Sort(paramsArr);
                     foreach (var shopCfgId in paramsArr)
@@ -52,7 +52,7 @@ namespace GFGGame
                         if (ltgGbItemData != null)
                         {
                             var index = _ltgGbItemData3.IndexOf(ltgGbItemData);
-                            ltgGbItemData.EndTime = activityInfo.endTime;
+                            ltgGbItemData.EndTime = activityInfo.EndTime;
                             if (ltgGbItemData.ShopCfgIds != null)
                             {
                                 if (ltgGbItemData.ShopCfgIds.Count < 3)
@@ -73,7 +73,7 @@ namespace GFGGame
                             {
                                 IndexType = shopCfg.menu2,
                                 ShopCfgIds = new List<int> { shopCfgId },
-                                EndTime = activityInfo.endTime
+                                EndTime = activityInfo.EndTime
                             };
 
                             _ltgGbItemData3.Add(ltgGbItemData);
@@ -97,15 +97,15 @@ namespace GFGGame
             foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(
                          ActivityType.XSLB2))
             {
-                if (activityInfo.endTime >= TimeInfo.Instance.ServerNow())
+                if (activityInfo.EndTime >= TimeInfo.Instance.ServerNow())
                 {
-                    ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.activityId);
+                    ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId);
                     //判断是否是类型4的数据
                     if (activityOpenCfg.type == ActivityType.XSLB2)
                     {
                         foreach (var shopCfgId in activityOpenCfg.paramsArr)
                         {
-                            FillData(_ltgGbItemData4, shopCfgId, activityInfo.endTime);
+                            FillData(_ltgGbItemData4, shopCfgId, activityInfo.EndTime);
                         }
                     }
                 }
@@ -120,13 +120,13 @@ namespace GFGGame
             foreach (ActivityInfo activityInfo in ActivityGlobalDataManager.Instance.GetActivityInfoByType(
                          ActivityType.XSLB3))
             {
-                if (activityInfo.endTime >= TimeInfo.Instance.ServerNow())
+                if (activityInfo.EndTime >= TimeInfo.Instance.ServerNow())
                 {
-                    ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.activityId);
+                    ActivityOpenCfg activityOpenCfg = ActivityOpenCfgArray.Instance.GetCfg(activityInfo.ActivityId);
                     //判断是否是类型4的数据
                     if (activityOpenCfg.type == ActivityType.XSLB3)
                     {
-                        FillData(_ltgGbItemData5, activityOpenCfg.paramsArr[0], activityInfo.endTime);
+                        FillData(_ltgGbItemData5, activityOpenCfg.paramsArr[0], activityInfo.EndTime);
                     }
                 }
             }

+ 21 - 3
GameClient/Assets/Game/HotUpdate/Data/TaskDataManager.cs

@@ -54,6 +54,24 @@ namespace GFGGame
             }
         }
 
+        //RemoveTaskInfo
+        public void RemoveTaskInfo(int taskId)
+        {
+            TaskInfosDic.Remove(taskId);
+            //获取任务配置
+            var cfg = TaskCfgArray.Instance.GetCfg(taskId);
+            if (cfg == null)
+            {
+                Log.Error($"出现了没有配置的任务id{taskId}");
+                return;
+            }
+            var taskType = cfg.taskType;
+            TaskType2TaskIdListDic.TryGetValue(taskType, out var taskIds);
+            if (taskIds == null) return;
+            taskIds.Remove(taskId);
+            if (taskIds.Count == 0) TaskType2TaskIdListDic.Remove(taskType);
+        }
+
         public void UpdateTaskState(int taskId, int state)
         {
             TaskInfosDic.TryGetValue(taskId, out var taskInfo);
@@ -153,9 +171,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());
             }
         }

+ 20 - 10
GameClient/Assets/Game/HotUpdate/ServerProxy/ActivityGlobalSProxy.cs

@@ -10,9 +10,9 @@ namespace ET
         {
             ActivityGlobalDataManager.Instance.AddActivityInfo(new ActivityInfo
             {
-                activityId = message.ActivityId,
-                startTime = message.StartTime,
-                endTime = message.EndTime
+                ActivityId = message.ActivityId,
+                StartTime = message.StartTime,
+                EndTime = message.EndTime
             });
             await ETTask.CompletedTask;
         }
@@ -27,6 +27,16 @@ namespace ET
             await ETTask.CompletedTask;
         }
     }
+
+    //S2C_SyncActivityCountValue
+    public class S2C_SyncActivityCountValueHandler : AMHandler<S2C_SyncActivityCountValue>
+    {
+        protected override async ETTask Run(Session session, S2C_SyncActivityCountValue message)
+        {
+            ActivityGlobalDataManager.Instance.SetActivityCountValue(message.ActivityId, message.CountValue);
+            await ETTask.CompletedTask;
+        }
+    }
 }
 
 namespace GFGGame
@@ -48,10 +58,11 @@ namespace GFGGame
             {
                 ActivityGlobalDataManager.Instance.AddActivityInfo(new ActivityInfo
                 {
-                    activityId = activityInfo.ActivityId,
-                    startTime = activityInfo.StartTime,
-                    endTime = activityInfo.EndTime,
-                    GetRewards = activityInfo.GetRewards
+                    ActivityId = activityInfo.ActivityId,
+                    StartTime = activityInfo.StartTime,
+                    EndTime = activityInfo.EndTime,
+                    GetRewards = activityInfo.GetRewards,
+                    CountValue = activityInfo.CountValue
                 });
             });
         }
@@ -60,8 +71,7 @@ namespace GFGGame
         public static async ETTask<bool> ReqCloseActivity(int activityId)
         {
             var response =
-                (S2C_CloseActivity)await MessageHelper.SendToServer(new C2S_CloseActivity()
-                { ActivityId = activityId });
+                (S2C_CloseActivity)await MessageHelper.SendToServer(new C2S_CloseActivity { ActivityId = activityId });
             if (!(response is { Error: ErrorCode.ERR_Success }))
             {
                 Log.Error("ReqCloseActivity error");
@@ -75,7 +85,7 @@ namespace GFGGame
         {
             var response =
                 (S2C_GetActivityBonus)await MessageHelper.SendToServer(new C2S_GetActivityBonus()
-                { ActivityId = activityId, BonusId = bonusId });
+                    { ActivityId = activityId, BonusId = bonusId });
             if (!(response is { Error: ErrorCode.ERR_Success })) return false;
             //奖励弹窗
             BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.itemList));

+ 11 - 1
GameClient/Assets/Game/HotUpdate/ServerProxy/TaskSProxy.cs

@@ -9,7 +9,6 @@ namespace ET
     {
         protected override async ETTask Run(Session session, M2C_TaskInfoChange message)
         {
-            // Log.Info($"M2C_TaskInfoChangeHandler");
             var taskInfo = new TaskInfo
             {
                 ID = message.TaskInfo.Id,
@@ -21,6 +20,17 @@ namespace ET
             await ETTask.CompletedTask;
         }
     }
+
+    //M2C_TaskClose
+    public class M2C_TaskCloseHandler : AMHandler<M2C_TaskClose>
+    {
+        protected override async ETTask Run(Session session, M2C_TaskClose message)
+        {
+            TaskDataManager.Instance.RemoveTaskInfo(message.TaskId);
+            EventAgent.DispatchEvent(ConstMessage.NOTICE_TASK_STATE_CHANGE, message.TaskId);
+            await ETTask.CompletedTask;
+        }
+    }
 }
 
 namespace GFGGame

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/DailyWelfare/DailyWelfareView.cs

@@ -97,7 +97,7 @@ namespace GFGGame
             {
                 ActivityInfo activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(ActivityDataManager.Instance.actLimitChargeId);
                 long curTime = TimeHelper.ServerNow();
-                long endTime = activityInfo.endTime;
+                long endTime = activityInfo.EndTime;
                 if (curTime < endTime)
                 {
                     _ui.m_comList.m_btnLimitChargeAddUp.m_txtTime.text = string.Format("剩余时间:{0}", TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime));

+ 5 - 6
GameClient/Assets/Game/HotUpdate/Views/DailyWelfare/LimitChargeView.cs

@@ -45,7 +45,7 @@ namespace GFGGame
         {
             base.AddEventListener();
             EventAgent.AddEventListener(ConstMessage.ACTIVITY_REWARD_ADD, UpdateView);
-            EventAgent.AddEventListener(ConstMessage.NUMERIC_CHANGE, UpdateView);
+            EventAgent.AddEventListener(ConstMessage.ACTIVITY_COUNT_VALUE_CHANGE, UpdateView);
         }
 
         protected override void OnShown()
@@ -69,7 +69,7 @@ namespace GFGGame
         {
             base.RemoveEventListener();
             EventAgent.RemoveEventListener(ConstMessage.ACTIVITY_REWARD_ADD, UpdateView);
-            EventAgent.RemoveEventListener(ConstMessage.NUMERIC_CHANGE, UpdateView);
+            EventAgent.RemoveEventListener(ConstMessage.ACTIVITY_COUNT_VALUE_CHANGE, UpdateView);
         }
         private void OnBtnBackClick()
         {
@@ -77,9 +77,8 @@ namespace GFGGame
         }
         private void UpdateTime(object param)
         {
-            ActivityInfo activityInfo = ActivityGlobalDataManager.Instance.GetActivityInfo(ActivityDataManager.Instance.actLimitChargeId);
             long curTime = TimeHelper.ServerNow();
-            long endTime = activityInfo.endTime;
+            long endTime = _activityInfo.EndTime;
             _ui.m_txtTime.text = TimeUtil.FormattingTimeTo_DDHHmm(endTime - curTime);
         }
 
@@ -101,7 +100,7 @@ namespace GFGGame
 
             UI_ListChargeItem item = UI_ListChargeItem.Proxy(obj);
 
-            int limitChargeExp = GameGlobal.myNumericComponent.GetAsInt(NumericType.TotalRechargeScore);
+            long limitChargeExp = _activityInfo.CountValue;// GameGlobal.myNumericComponent.GetAsInt(NumericType.TotalRechargeScore);
             item.m_txtTitle.text = string.Format("活动期间累计获得{0}会员积分({1}/{2})", _rechargeCfgs[index].value, limitChargeExp, _rechargeCfgs[index].value);
             if (limitChargeExp >= _rechargeCfgs[index].value)
             {
@@ -148,7 +147,7 @@ namespace GFGGame
         {
             rechargeCfgs.Sort((ActivityRechargeCfg a, ActivityRechargeCfg b) =>
             {
-                int limitChargeExp = GameGlobal.myNumericComponent.GetAsInt(NumericType.TotalRechargeScore);
+                long limitChargeExp = _activityInfo.CountValue;// GameGlobal.myNumericComponent.GetAsInt(NumericType.TotalRechargeScore);
                 int stateA = _activityInfo.GetRewards.IndexOf(a.id);
                 int stateB = _activityInfo.GetRewards.IndexOf(b.id);
 

+ 3 - 3
GameClient/Assets/Game/HotUpdate/Views/LuckyBox/LuckyBoxActivityView.cs

@@ -148,7 +148,7 @@ namespace GFGGame
                 ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB3);
 
             var list = activityInfoByTypeList
-                .Where(a => a.endTime > TimeInfo.Instance.ServerNow()).ToList();
+                .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();
             if (list.Count == 0)
             {
                 _ui.m_comBagTime.target.visible = false;
@@ -156,7 +156,7 @@ namespace GFGGame
             }
             else
             {
-                _ui.m_comBagTime.m_txtGiftBagTime.text = TimeUtil.GetTimeLeft(TimeInfo.Instance.ServerNow(), list[0].endTime);
+                _ui.m_comBagTime.m_txtGiftBagTime.text = TimeUtil.GetTimeLeft(TimeInfo.Instance.ServerNow(), list[0].EndTime);
                 _ui.m_comBagTime.target.visible = true;
                 _ui.m_btnGiftBag.visible = true;
             }
@@ -225,7 +225,7 @@ namespace GFGGame
                 ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB3);
 
             var list = activityInfoByTypeList
-                .Where(a => a.endTime > TimeInfo.Instance.ServerNow()).ToList();
+                .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();
             if (list.Count == 0)
             {
                 PromptController.Instance.ShowFloatTextPrompt("活动已结束");

+ 6 - 6
GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs

@@ -683,7 +683,7 @@ namespace GFGGame
               ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB1);
 
             var list = activityInfoByTypeList
-                .Where(a => a.endTime > TimeInfo.Instance.ServerNow()).ToList();
+                .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();
             if (list.Count == 0)
             {
                 PromptController.Instance.ShowFloatTextPrompt("活动已结束");
@@ -701,7 +701,7 @@ namespace GFGGame
                 ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB2);
 
             var list = activityInfoByTypeList
-                .Where(a => a.endTime > TimeInfo.Instance.ServerNow()).ToList();
+                .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();
             if (list.Count == 0)
             {
                 PromptController.Instance.ShowFloatTextPrompt("活动已结束");
@@ -718,14 +718,14 @@ namespace GFGGame
                 ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB1);
 
             var list = activityInfoByTypeList
-                .Where(a => a.endTime > TimeInfo.Instance.ServerNow()).ToList();
+                .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();
             if (list.Count == 0)
             {
                 _ui.m_btnGiftBag1.target.visible = false;
             }
             else
             {
-                _ui.m_btnGiftBag1.m_txtTime.text = TimeUtil.GetTimeLeft(TimeInfo.Instance.ServerNow(), list[0].endTime);
+                _ui.m_btnGiftBag1.m_txtTime.text = TimeUtil.GetTimeLeft(TimeInfo.Instance.ServerNow(), list[0].EndTime);
                 _ui.m_btnGiftBag1.target.visible = true;
             }
         }
@@ -736,14 +736,14 @@ namespace GFGGame
                 ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB2);
 
             var list = activityInfoByTypeList
-                .Where(a => a.endTime > TimeInfo.Instance.ServerNow()).ToList();
+                .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();
             if (list.Count == 0)
             {
                 _ui.m_btnGiftBag2.target.visible = false;
             }
             else
             {
-                _ui.m_btnGiftBag2.m_txtTime.text = TimeUtil.GetTimeLeft(TimeInfo.Instance.ServerNow(), list[0].endTime);
+                _ui.m_btnGiftBag2.m_txtTime.text = TimeUtil.GetTimeLeft(TimeInfo.Instance.ServerNow(), list[0].EndTime);
                 _ui.m_btnGiftBag2.target.visible = true;
             }
         }