| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 | 
							- using System.Collections.Generic;
 
- using System.Linq;
 
- using ET;
 
- using FairyGUI;
 
- namespace GFGGame
 
- {
 
-     public class ActivityInfo
 
-     {
 
-         public int ActivityId;
 
-         public long StartTime;
 
-         public long EndTime;
 
-         //已经领取的奖励
 
-         public List<int> GetRewards = new List<int>();
 
-         //计数值
 
-         public long CountValue;
 
-     }
 
-     public class ActivityGlobalDataManager : SingletonBase<ActivityGlobalDataManager>
 
-     {
 
-         private readonly Dictionary<int, ActivityInfo> activityInfos = new Dictionary<int, ActivityInfo>();
 
-         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);
 
-             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);
 
-             //ACTIVITY_ADD
 
-             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);
 
-             }
 
-             else
 
-             {
 
-                 ClientRemoveActivityInfo(activityInfo.ActivityId);
 
-             }
 
-         }
 
-         private static void ClientRemoveActivityInfo(object param)
 
-         {
 
-             var activityId = (int)param;
 
-             ActivityGlobalSProxy.ReqCloseActivity(activityId).Coroutine();
 
-         }
 
-         public void RemoveActivityInfo(int activityId)
 
-         {
 
-             if (!activityInfos.ContainsKey(activityId)) return;
 
-             activityInfos.Remove(activityId);
 
-             if (!activityInfosByType.ContainsKey(activityId)) return;
 
-             activityInfosByType.Remove(activityId);
 
-             //ACTIVITY_REMOVE
 
-             EventAgent.DispatchEvent(ConstMessage.ACTIVITY_REMOVE, activityId);
 
-         }
 
-         //获取活动数据
 
-         public ActivityInfo GetActivityInfo(int activityId)
 
-         {
 
-             if (!activityInfos.ContainsKey(activityId)) return null;
 
-             return activityInfos[activityId];
 
-         }
 
-         //获取活动数据根据类型
 
-         public List<int> GetActivityInfoIdsByType(int activityType)
 
-         {
 
-             return !activityInfosByType.ContainsKey(activityType) ? new List<int>() : activityInfosByType[activityType];
 
-         }
 
-         //获取活动数据根据类型
 
-         public List<ActivityInfo> GetActivityInfoByType(int activityType)
 
-         {
 
-             var activityInfoIds = GetActivityInfoIdsByType(activityType);
 
-             return activityInfoIds.Select(GetActivityInfo).Where(activityInfo => activityInfo != null).ToList();
 
-         }
 
-         public List<ActivityInfo> GetActivityInfoByTypeAndID(int activityType, int outActivityID)
 
-         {
 
-             List<ActivityOpenCfg> list = ActivityOpenCfgArray.Instance.GetCfgsBytype(activityType);
 
-             List<int> infoList = new List<int>();
 
-             for(int i = 0; i < list.Count; i++)
 
-             {
 
-                 if(list[i].params2Arr!=null && list[i].params2Arr.Length > 0 
 
-                     && list[i].params2Arr[0] == outActivityID)
 
-                 {
 
-                     infoList.Add(list[i].id);
 
-                 }
 
-             }
 
-             return infoList.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)
 
-         {
 
-             if (!activityInfos.ContainsKey(activityId)) return;
 
-             var activityInfo = activityInfos[activityId];
 
-             if (activityInfo.GetRewards.Contains(rewardId)) return;
 
-             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);
 
-         }
 
-      
 
-         //根据活动id判断活动是否开启
 
-         public bool IsActivityOpen(int activityId)
 
-         {
 
-             if (!activityInfos.ContainsKey(activityId)) return false;
 
-             var activityInfo = activityInfos[activityId];
 
-             return activityInfo.StartTime <= TimeHelper.ServerNow() && activityInfo.EndTime > TimeHelper.ServerNow();
 
-         }
 
-     }
 
- }
 
 
  |