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 GetRewards = new List(); } public class ActivityGlobalDataManager : SingletonBase { private Dictionary activityInfos = new Dictionary(); private Dictionary> activityInfosByType = new Dictionary>(); //添加活动数据 public void AddActivityInfo(ActivityInfo activityInfo) { if (activityInfo == null) return; if (activityInfos.ContainsKey(activityInfo.activityId)) return; activityInfos.Add(activityInfo.activityId, activityInfo); if (!activityInfosByType.ContainsKey(activityInfo.activityId)) { activityInfosByType.Add(activityInfo.activityId, new List()); } activityInfosByType[activityInfo.activityId].Add(activityInfo.activityId); //ACTIVITY_ADD EventAgent.DispatchEvent(ConstMessage.ACTIVITY_ADD, activityInfo.activityId); //TODO 判断下时间非法情况 Timers.inst.Add(activityInfo.endTime - TimeHelper.ServerNow(), 0, 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 GetActivityInfoIdsByType(int activityType) { return !activityInfosByType.ContainsKey(activityType) ? new List() : activityInfosByType[activityType]; } //获取活动数据根据类型 public List 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); } } }