using System; using System.Collections.Generic; using MongoDB.Bson.Serialization.Attributes; using ProtoBuf; namespace ET { [ProtoContract] [Config] public partial class CharacterCategory : ConfigSingleton<CharacterCategory>, IMerge { [ProtoIgnore] [BsonIgnore] private Dictionary<int, Character> dict = new Dictionary<int, Character>(); [BsonElement] [ProtoMember(1)] private List<Character> list = new List<Character>(); public void Merge(object o) { CharacterCategory s = o as CharacterCategory; this.list.AddRange(s.list); } [ProtoAfterDeserialization] public void ProtoEndInit() { foreach (Character config in list) { config.AfterEndInit(); this.dict.Add(config.Id, config); } this.list.Clear(); this.AfterEndInit(); } public Character Get(int id) { this.dict.TryGetValue(id, out Character item); if (item == null) { throw new Exception($"配置找不到,配置表名: {nameof (Character)},配置id: {id}"); } return item; } public bool Contain(int id) { return this.dict.ContainsKey(id); } public Dictionary<int, Character> GetAll() { return this.dict; } public Character GetOne() { if (this.dict == null || this.dict.Count <= 0) { return null; } return this.dict.Values.GetEnumerator().Current; } } [ProtoContract] public partial class Character: ProtoObject, IConfig { /// <summary>Id</summary> [ProtoMember(1)] public int Id { get; set; } /// <summary>职业名称</summary> [ProtoMember(2)] public string ProName { get; set; } /// <summary>职业ID</summary> [ProtoMember(3)] public int pro { get; set; } /// <summary>初始等级</summary> [ProtoMember(4)] public int initLevel { get; set; } /// <summary>初始暴击率</summary> [ProtoMember(5)] public int initCritRata { get; set; } /// <summary>初始暴伤%</summary> [ProtoMember(6)] public int CritDamage { get; set; } /// <summary>初始穿透</summary> [ProtoMember(7)] public int Piercethrough { get; set; } /// <summary>生命恢复</summary> [ProtoMember(8)] public int baseHPRegen { get; set; } /// <summary>治疗效果</summary> [ProtoMember(9)] public int HealEffect { get; set; } /// <summary>被治疗效果</summary> [ProtoMember(10)] public int HealedEffect { get; set; } /// <summary>基础攻速</summary> [ProtoMember(11)] public int baseAtkSpeed { get; set; } /// <summary>基础移动速度</summary> [ProtoMember(12)] public int baseMoveSpeed { get; set; } /// <summary>初始模型</summary> [ProtoMember(13)] public string model { get; set; } /// <summary>初始武器模型</summary> [ProtoMember(14)] public string weaponmodel { get; set; } /// <summary>初始时装</summary> [ProtoMember(15)] public string initFashion { get; set; } /// <summary>初始装备</summary> [ProtoMember(16)] public string initEquip { get; set; } /// <summary>初始携带道具</summary> [ProtoMember(17)] public string initItem { get; set; } /// <summary>初始技能列表</summary> [ProtoMember(18)] public string initSkill { get; set; } /// <summary>总数</summary> [ProtoMember(19)] public string count { get; set; } /// <summary>音效</summary> [ProtoMember(20)] public string Sound { get; set; } /// <summary>等级上限</summary> [ProtoMember(21)] public int finalLevel { get; set; } /// <summary>基础移速值</summary> [ProtoMember(22)] public string inspeed { get; set; } } }