Files
2026-10-16 23:33:13 -07:00

63 lines
2.0 KiB
C#

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<AvatarItem> GetAvatarItems()
{
if (string.IsNullOrWhiteSpace(this.AvatarItems) || this.AvatarItems == "null")
return new List<AvatarItem>();
return JsonSerializer.Deserialize<List<AvatarItem>>(this.AvatarItems) ?? new List<AvatarItem>();
}
public void AddAvatarItem(AvatarItem avatarItem)
{
var items = GetAvatarItems();
items.Add(avatarItem);
this.AvatarItems = items.ToJson();
}
public List<Equipment> GetEquipment()
{
return JsonSerializer.Deserialize<List<Equipment>>(this.Equipment) ?? new List<Equipment>();
}
public void AddEquipment(Equipment equipment)
{
var items = GetEquipment();
items.Add(equipment);
this.Equipment = items.ToJson();
}
public List<Consumable> GetConsumables()
{
if (string.IsNullOrWhiteSpace(this.Consumables) || this.Consumables == "null")
return new List<Consumable>();
return JsonSerializer.Deserialize<List<Consumable>>(this.Consumables) ?? new List<Consumable>();
}
public void AddConsumable(Consumable consumable)
{
var consumables = GetConsumables();
consumables.Add(consumable);
this.Consumables = JsonSerializer.Serialize(consumables);
}
public void SetConsumables(List<Consumable> consumables)
{
this.Consumables = JsonSerializer.Serialize(consumables ?? new List<Consumable>());
}
}
}