using System; using System.Collections.Generic; using MongoDB.Bson.Serialization.Attributes; using ProtoBuf; namespace ET { [ProtoContract] [Config] public partial class MapConfigCategory : ConfigSingleton, IMerge { [ProtoIgnore] [BsonIgnore] private Dictionary dict = new Dictionary(); [BsonElement] [ProtoMember(1)] private List list = new List(); public void Merge(object o) { MapConfigCategory s = o as MapConfigCategory; this.list.AddRange(s.list); } [ProtoAfterDeserialization] public void ProtoEndInit() { foreach (MapConfig config in list) { config.AfterEndInit(); this.dict.Add(config.Id, config); } this.list.Clear(); this.AfterEndInit(); } public MapConfig Get(int id) { this.dict.TryGetValue(id, out MapConfig item); if (item == null) { throw new Exception($"配置找不到,配置表名: {nameof (MapConfig)},配置id: {id}"); } return item; } public bool Contain(int id) { return this.dict.ContainsKey(id); } public Dictionary GetAll() { return this.dict; } public MapConfig GetOne() { if (this.dict == null || this.dict.Count <= 0) { return null; } return this.dict.Values.GetEnumerator().Current; } } [ProtoContract] public partial class MapConfig: ProtoObject, IConfig { /// Id [ProtoMember(1)] public int Id { get; set; } /// 名字 [ProtoMember(2)] public string Name { get; set; } /// 成色 [ProtoMember(3)] public int Qcolor { get; set; } /// 玩法类型 [ProtoMember(4)] public int Type { get; set; } /// 场景类型 [ProtoMember(5)] public int AreaType { get; set; } /// 地图模版id [ProtoMember(6)] public int TemplateID { get; set; } /// 怪物强度 [ProtoMember(7)] public string MonsterHard { get; set; } /// 所属阵营 [ProtoMember(8)] public int Race { get; set; } /// 默认PK模式 [ProtoMember(9)] public int Pktype { get; set; } /// 是否允许改变PK模式 [ProtoMember(10)] public int changePKtype { get; set; } /// 是否无视PK红名规则 [ProtoMember(11)] public int ignorePkRule { get; set; } /// 是否可使用回城功能 [ProtoMember(12)] public int canBeTrans { get; set; } /// 地图等级 [ProtoMember(13)] public int MapLevel { get; set; } /// 掉线后返回地图ID [ProtoMember(14)] public int DisConnToMapID { get; set; } /// 复活地图ID [ProtoMember(15)] public int RevivedMapID { get; set; } /// 生命周期 [ProtoMember(16)] public int LifeTime { get; set; } /// 人数软上限 [ProtoMember(17)] public int FullPlayers { get; set; } /// 人数硬上限 [ProtoMember(18)] public int MaxPlayers { get; set; } /// 状态分界值 [ProtoMember(19)] public int Boundary { get; set; } /// 需要等级 [ProtoMember(20)] public int ReqLevel { get; set; } /// 限制等级 [ProtoMember(21)] public int Levellimit { get; set; } /// 需要VIP等级 [ProtoMember(22)] public string ReqVip { get; set; } /// 需要任务ID [ProtoMember(23)] public int ReqQuestId { get; set; } /// 可进入阵营 [ProtoMember(24)] public int AllowedRace { get; set; } /// 状态条件 [ProtoMember(25)] public string ReqState { get; set; } /// 状态值 [ProtoMember(26)] public int StateValue { get; set; } /// 开放策略 [ProtoMember(27)] public int OpenRule { get; set; } /// 开放日 [ProtoMember(28)] public string OpenDate { get; set; } /// 开始时间 [ProtoMember(29)] public string BeginTime { get; set; } /// 结束时间 [ProtoMember(30)] public string EndTime { get; set; } /// 关闭时强制传送到地图ID [ProtoMember(31)] public int ClosedToMapID { get; set; } /// 进入是否扣除队员物品 [ProtoMember(32)] public int ReqNotOnlyLeader { get; set; } /// 进入需要物品Code [ProtoMember(33)] public string ReqItemCode { get; set; } /// 进入需要物品数量 [ProtoMember(34)] public int ReqItemCount { get; set; } /// 进入后扣除物品数量 [ProtoMember(35)] public int ReduceItemCount { get; set; } /// 是否可以传送 [ProtoMember(36)] public int AllowedTransfer { get; set; } /// 传送消耗道具 [ProtoMember(37)] public string CostItem { get; set; } /// 传送消耗道具数量 [ProtoMember(38)] public int CostItemNum { get; set; } /// 扣除金币 [ProtoMember(39)] public int CostGold { get; set; } /// 随机宝箱出现概率 [ProtoMember(40)] public int RandChestChance { get; set; } /// 随机宝箱最大数量 [ProtoMember(41)] public int MaxRandChest { get; set; } /// 随机宝箱TC [ProtoMember(42)] public string RandChestTC { get; set; } /// 场景小地图 [ProtoMember(43)] public string MapName { get; set; } /// 地图描述 [ProtoMember(45)] public string MapDesc { get; set; } /// 场景传送 [ProtoMember(46)] public string Connect { get; set; } /// 是否允许改变分配方式 [ProtoMember(47)] public int IsChange { get; set; } /// 默认分配模式 [ProtoMember(48)] public int Distribution { get; set; } /// 能否自动战斗 [ProtoMember(49)] public int AutoFight { get; set; } /// 能否吃药剂 [ProtoMember(50)] public int UseAgent { get; set; } /// 能否使用坐骑 [ProtoMember(51)] public int RideMount { get; set; } /// 能否携带宠物 [ProtoMember(52)] public int TakePet { get; set; } /// 是否重置状态 [ProtoMember(53)] public int Recovery { get; set; } /// BOSS列表显示 [ProtoMember(54)] public int BossInfoShow { get; set; } /// 连杀时间间隔-毫秒 [ProtoMember(55)] public int killInterval { get; set; } /// 连杀满值重置 [ProtoMember(56)] public int killFullNum { get; set; } /// 连杀满值冷却-秒 [ProtoMember(57)] public int killFullCollSec { get; set; } /// 灵气点采集修为值 [ProtoMember(58)] public int Cultivation { get; set; } /// 地图是否有迷雾 [ProtoMember(59)] public int IsFog { get; set; } /// 副本通关时长 [ProtoMember(60)] public int GameTime { get; set; } /// 能否进行召唤 [ProtoMember(61)] public int IsCall { get; set; } /// 能否响应召唤 [ProtoMember(62)] public int IsCanBeCall { get; set; } } }