|
@@ -0,0 +1,78 @@
|
|
|
+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 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();
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|