1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- 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);
- 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);
- }
- }
- }
|