namespace Chrono.Model; public class CardData { public string Name { get; init; } = ""; public string Category { get; init; } = ""; public int? Cost { get; init; } public int? Attack { get; init; } public int? Health { get; init; } public float StatEfficiency => Cost is > 0 && Attack is not null && Health is not null ? MathF.Round((Health.Value + Attack.Value) / (float)Cost.Value, 2) : 0; public string? Description { get; init; } public string? Faction { get; init; } public string? Set { get; init; } public string? Speed { get; init; } public List Archetypes { get; init; } = []; public List? ImmortalizeTo { get; init; } public string? ImmortalizeFrom { get; init; } public string? ImmortalizeWhen { get; init; } public string? ImageFile { get; init; } public bool IsAgent => Category == "Agent"; public bool IsSpell => Category == "Spell"; public bool IsToken => Category == "Token"; public string? CostDisplay => Cost?.ToString(); public string? AttackDisplay => Attack?.ToString(); public string? HealthDisplay => Health?.ToString(); public bool HasImmortalize => ImmortalizeTo is { Count: > 0 }; public bool IsImmortalized => ImmortalizeFrom != null; public string ImagePath => $"cards/{ImageFile ?? "placeholder.png"}"; }