using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json; using RadicadeServer.Extensions; using RadicadeServer.RecNet.Avatar; namespace RadicadeServer.RecNet.Accounts { public class PlayerUnlocks { [Key, DatabaseGenerated(DatabaseGeneratedOption.None)] public long AccountId { get; set; } public string AvatarItems { get; set; } = DBConfig.DefaultAvatarUnlocks; public string Consumables { get; set; } = DBConfig.DefaultConsumableUnlocks; public string Equipment { get; set; } = DBConfig.DefaultEquipmentUnlocks; public string Inventions { get; set; } = "[]"; public string RoomKeys { get; set; } = "[]"; public List GetAvatarItems() { if (string.IsNullOrWhiteSpace(this.AvatarItems) || this.AvatarItems == "null") return new List(); return JsonSerializer.Deserialize>(this.AvatarItems) ?? new List(); } public void AddAvatarItem(AvatarItem avatarItem) { var items = GetAvatarItems(); items.Add(avatarItem); this.AvatarItems = items.ToJson(); } public List GetEquipment() { return JsonSerializer.Deserialize>(this.Equipment) ?? new List(); } public void AddEquipment(Equipment equipment) { var items = GetEquipment(); items.Add(equipment); this.Equipment = items.ToJson(); } public List GetConsumables() { if (string.IsNullOrWhiteSpace(this.Consumables) || this.Consumables == "null") return new List(); return JsonSerializer.Deserialize>(this.Consumables) ?? new List(); } public void AddConsumable(Consumable consumable) { var consumables = GetConsumables(); consumables.Add(consumable); this.Consumables = JsonSerializer.Serialize(consumables); } public void SetConsumables(List consumables) { this.Consumables = JsonSerializer.Serialize(consumables ?? new List()); } } }