| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | 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 class ActivityGlobalDataManager : SingletonBase<ActivityGlobalDataManager>    {        private Dictionary<int, ActivityInfo> activityInfos = new Dictionary<int, ActivityInfo>();        private 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 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);        }    }}
 |