| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 | 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();        }        //RemoveActivityInfo        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 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();        }    }}
 |