TaskInfosComponent.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System.Collections.Generic;
  2. using GFGGame;
  3. using MongoDB.Bson.Serialization.Attributes;
  4. using MongoDB.Bson.Serialization.Options;
  5. namespace ET
  6. {
  7. public class TaskInfosComponent : Entity, IAwake, IDestroy, IDeserialize, ITransfer, IUnitCache, IConfigHotLoad
  8. {
  9. public string StrId = "";
  10. //解锁的任务列表,不能单独添加和移除,必须使用封装的AddContainer、RemoveContainer、GetTaskInfo访问操作
  11. [BsonIgnore] public Dictionary<int, TaskInfo> TaskInfosDic = new Dictionary<int, TaskInfo>();
  12. //已解锁的任务类型对应的任务id列表,这里的类型为 功能类型TaskCfg.funcType定义
  13. [BsonIgnore] public readonly MultiMapSet<int, int> FuncType2TaskIds = new MultiMapSet<int, int>();
  14. //初始化时遍历任务数量,用来判断热加载配置后,任务数量是否变化,未变化就不需要重置未解锁列表
  15. [BsonIgnore] public int LastInitCount = 0;
  16. //未解锁的任务列表
  17. [BsonIgnore] public HashSet<int> LockTasks = new HashSet<int>();
  18. //待同步的任务列表
  19. [BsonIgnore] public readonly Queue<int> SyncTasks = new Queue<int>();
  20. //任务每日状态记录,用于每天只记一次进度的任务
  21. [BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)]
  22. public Dictionary<int, int> DailyCountDic = new Dictionary<int, int>();
  23. //待同步的任务分类,用于通知进度
  24. [BsonIgnore] public readonly UniqueQueue<int> SyncTaskAchievementTypes = new UniqueQueue<int>();
  25. //用于记录已经载入TaskInfosDic的任务分类 <LoadGroupTaskTypeFormat>
  26. [BsonIgnore] public HashSet<string> LoadGroupTaskTypes = new HashSet<string>();
  27. //LoadGroupTaskTypes -> funcType-achievementType-achievementSubType
  28. [BsonIgnore] public const string LoadGroupTaskTypeFormat = "{0}-{1}-{2}";
  29. // //成就任务分组
  30. // [BsonIgnore] public MultiMapSet<string, TaskInfo> GroupTaskType2TaskInfos = new MultiMapSet<string, TaskInfo>();
  31. //成就任务完成数量,<achievementType,完成数量>
  32. [BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)]
  33. public Dictionary<int, int> AcTypeCoutDic = new Dictionary<int, int>();
  34. }
  35. }