Files
2025-05-18 02:27:17 -04:00

68 lines
2.2 KiB
C#

using MessagePack;
using SVSim.Database.Models;
namespace SVSim.EmulatedEntrypoint.Models.Dtos;
/// <summary>
/// A deck belonging to a user.
/// </summary>
[MessagePackObject]
public class UserDeck
{
[Key("deck_no")]
public int DeckNumber { get; set; }
[Key("class_id")]
public int ClassId { get; set; }
[Key("sleeve_id")]
public int SleeveId { get; set; }
[Key("leader_skin_id")]
public int LeaderSkinId { get; set; }
[Key("deck_name")]
public string Name { get; set; } = string.Empty;
[Key("card_id_array")]
public List<long> Cards { get; set; } = new List<long>();
[Key("is_complete_deck")]
public int IsCompleteDeck { get; set; }
[Key("restricted_card_exists")]
public bool RestrictedCardExists { get; set; }
[Key("is_available_deck")]
public int IsAvailable { get; set; }
[Key("maintenance_card_ids")]
public List<long> MaintenanceCards { get; set; } = new List<long>();
[Key("is_include_un_possession_card")]
public bool IncludesNonCollectibleCards { get; set; }
[Key("is_random_leader_skin")]
public int IsRandomLeaderSkin { get; set; }
[Key("leader_skin_id_list")]
public List<int> LeaderSkinIds { get; set; } = new List<int> { 0 };
[Key("order_num")]
public int Order { get; set; }
[Key("create_deck_time")]
public DateTime DeckCreateTime { get; set; }
public UserDeck(ShadowverseDeckEntry deck)
{
this.DeckNumber = deck.Number;
this.ClassId = deck.Class.Id;
this.LeaderSkinId = deck.LeaderSkin.Id;
this.SleeveId = deck.Sleeve.Id;
this.Name = deck.Name;
this.Cards = deck.Cards.SelectMany(card => Enumerable.Range(0, card.Count).Select(count => card.Card.Id))
.ToList();
this.IsRandomLeaderSkin = deck.RandomLeaderSkin ? 1 : 0;
this.Order = deck.Number;
this.DeckCreateTime = deck.DateCreated;
//TODO probably want to calc some of these on demand
this.IsCompleteDeck = 1;
this.RestrictedCardExists = false;
this.IsAvailable = 1;
this.MaintenanceCards = new();
this.IncludesNonCollectibleCards = false;
}
public UserDeck()
{
}
}