123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- 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 判断下时间非法情况
- 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);
- }
- }
- }
|