12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- 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 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<int>());
- }
- 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<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);
- }
- }
- }
|