using System; using System.Collections.Generic; using Cal; using MongoDB.Bson.Serialization.Attributes; using MongoDB.Bson.Serialization.Options; namespace ET { public enum StarSoulItemSortType: byte { /// /// 优先品质 /// QualityFirst, /// /// 优先套装 /// TypeFirst, /// /// 优先等级 /// LevelFirst, } public class StarSoulItem { public long Id; /// /// 套装Id /// public int typeId; public byte level; public int exp; /// /// 装备栏 /// public EquipType posType; public Quality quality; public bool isUsed; public bool isLocked; // [BsonRepresentation(MongoDB.Bson.BsonType.Double, AllowTruncation = true)] public int mainId; public int[] viceIds = new int[4]; [BsonRepresentation(MongoDB.Bson.BsonType.Double, AllowTruncation = true)] public float[] viceAdd = new float[4]; public byte addViceCount; public override string ToString() { return $"id={this.Id} type={this.typeId} {this.posType} {this.quality} level={this.level} isUsed={this.isUsed} islocked={this.isLocked}"; } } public class StarSoulSuit { [System.Flags] public enum StarSoulSuitType:byte { None, Suit4=1, /// /// 不要使用,不存在这种情况 /// Suit8=1<<1, Suit4And8 = Suit4|Suit8, } public int Id; public StarSoulSuitType type; } [BsonIgnoreExtraElements] public class StarSoulBag: Entity,ICombatBounds { public const ushort MaxCount = 1000; public int ItemCount; [BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)] public SortedDictionary itemDic = new SortedDictionary(); public long lastSortTime; public const int sortTimeIntervel = 120 * 1000; public List Suits = new List(); /// /// 星魂数量,用于计算套装 /// [BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)] public Dictionary typeStarSoulCount = new Dictionary(); [BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)] public Dictionary usedStarSoulDic = new Dictionary(); [BsonIgnore] public Func getAttributeFunc { get; set; } } }