mirror of
https://github.com/MikuLeaks/MikuSB.git
synced 2026-06-04 18:23:58 +00:00
71 lines
2.2 KiB
C#
71 lines
2.2 KiB
C#
using MikuSB.Enums.Item;
|
|
using MikuSB.Proto;
|
|
using SqlSugar;
|
|
|
|
namespace MikuSB.Database.Character;
|
|
|
|
[SugarTable("character_data")]
|
|
public class CharacterData : BaseDatabaseDataHelper
|
|
{
|
|
[SugarColumn(IsJson = true)] public List<CharacterInfo> Characters { get; set; } = [];
|
|
public uint NextCharacterGuid { get; set; } = 1;
|
|
}
|
|
|
|
public class CharacterInfo
|
|
{
|
|
public uint Guid { get; set; }
|
|
public ulong TemplateId { get; set; }
|
|
public uint Level { get; set; }
|
|
public int Exp { get; set; }
|
|
public uint Break { get; set; }
|
|
public int Evolue { get; set; }
|
|
public uint ProLevel { get; set; }
|
|
public int Trust { get; set; }
|
|
public uint WeaponUniqueId { get; set; }
|
|
public uint SkinId { get; set; }
|
|
public ItemFlagEnum Flag { get; set; } = ItemFlagEnum.FLAG_READED;
|
|
public uint Expiration { get; set; }
|
|
[SugarColumn(IsJson = true)] public List<uint> UnlockedSkin { get; set; } = [];
|
|
[SugarColumn(IsJson = true)] public List<uint> Spines { get; set; } = [];
|
|
[SugarColumn(IsJson = true)] public List<uint> Affixs { get; set; } = [];
|
|
// Key = EqSlot (= support card Detail), Value = support card UniqueId
|
|
[SugarColumn(IsJson = true)] public Dictionary<uint, uint> SupportSlots { get; set; } = [];
|
|
public long Timestamp { get; set; }
|
|
public uint Count { get; set; } = 1;
|
|
|
|
public Item ToProto()
|
|
{
|
|
var proto = new Item
|
|
{
|
|
Id = Guid,
|
|
Template = TemplateId,
|
|
Count = Count,
|
|
Flag = (uint)Flag,
|
|
Expiration = Expiration,
|
|
Enhance = new Enhance
|
|
{
|
|
Level = Level,
|
|
Exp = ToUInt32(Exp),
|
|
Break = Break,
|
|
Evolue = ToUInt32(Evolue),
|
|
ProLevel = ProLevel,
|
|
Trust = ToUInt32(Trust)
|
|
}
|
|
};
|
|
proto.Enhance.Spines.AddRange(Spines.Select(x => (ulong)x));
|
|
proto.Enhance.Affixs.AddRange(Affixs);
|
|
|
|
proto.Slots[4] = WeaponUniqueId;
|
|
proto.Slots[5] = SkinId;
|
|
foreach (var (slot, uid) in SupportSlots)
|
|
proto.Slots[slot] = uid;
|
|
|
|
return proto;
|
|
}
|
|
|
|
private static uint ToUInt32(int value)
|
|
{
|
|
return value > 0 ? (uint)value : 0;
|
|
}
|
|
|
|
} |