using MikuSB.Proto; using SqlSugar; namespace MikuSB.Database.Inventory; [SugarTable("inventory_data")] public class InventoryData : BaseDatabaseDataHelper { public uint NextUniqueUid { get; set; } = 100000; [SugarColumn(IsJson = true)] public Dictionary Items { get; set; } = []; // Key: UniqueId [SugarColumn(IsJson = true)] public Dictionary Weapons { get; set; } = []; // Key: UniqueId [SugarColumn(IsJson = true)] public Dictionary Skins { get; set; } = []; // Key: UniqueId } public abstract class BaseGameItemInfo { public uint UniqueId { get; set; } public ulong TemplateId { get; set; } public uint ItemCount { get; set; } } public abstract class GrowableItemInfo : BaseGameItemInfo { public bool IsLocked { get; set; } public uint Level { get; set; } public uint Exp { get; set; } public uint EquipAvatarId { get; set; } } public class GameWeaponInfo : GrowableItemInfo { public Item ToProto() { var proto = new Item { Id = UniqueId, Template = TemplateId, Count = ItemCount, Enhance = new Enhance { Level = Level } }; return proto; } } public class GameSkinInfo : BaseGameItemInfo { public uint Level { get; set; } public Item ToProto() { var proto = new Item { Id = UniqueId, Template = TemplateId, Count = ItemCount }; return proto; } }