Files
MikuSB/Common/Database/Character/CharacterData.cs
2026-04-28 15:37:44 +09:00

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;
}
}