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