PlayerAppearance.cs

Static lookup table for player card art. Maps catalog ids to hardcoded portrait paths, with special legendary portraits and figurine renders for Haaland and Messi.

namespace Socer;

// Card illustrations and native model renders are independent assets.
public static partial class PlayerAppearance
{
    public const string HaalandId="PRO-12";
    public const string MessiId="PRO-23";
    public const string MbappeId="PRO-24";
    public const string RonaldoId="PRO-53";
    public static bool HasOfficerTunic(string catalogId,string edition)=>catalogId==MbappeId && edition==CardRatings.Legendary;
    public static string HaalandPortrait=>"/portraits/haaland-cartoon-test-v1.png";
    public static string MessiPortrait=>"/portraits/messi-cartoon-test-v1.png";
    public static bool HasModel(string catalogId)=>catalogId is HaalandId or MessiId;
    public static bool HasArtwork(string catalogId)=>catalogId!=null && CardPortraits.ContainsKey(catalogId);
    public static string Portrait(PlayerCard card)
    {
        if(card==null)return null;
        if(card.IsAcademyLoan && CardPortraits.TryGetValue(card.AcademyPortraitId??"",out var academyPortrait))return academyPortrait;
        if(card.Rarity==CardRatings.Legendary)
        {
            var special=card.CatalogId switch {
                HaalandId=>"/portraits/haaland-legendary-v1.png",
                MbappeId=>"/portraits/mbappe-legendary-v1.png",
                RonaldoId=>"/portraits/ronaldo-legendary-v1.png",
                MessiId=>"/portraits/messi-legendary-v1.png",
                ZlatanId=>"/portraits/zlatan-legendary-v1.png",
                PirloId=>"/portraits/pirlo-legendary-v1.png",
                MaldiniId=>"/portraits/maldini-legendary-v1.png",
                BuffonId=>"/portraits/buffon-legendary-v1.png",_=>null
            };
            if(special!=null)return special;
        }
        return card.CatalogId is string id && CardPortraits.TryGetValue(id,out var path)?path:null;
    }
    public static string ModelPortrait(PlayerCard card,int modelRevision)=>card?.CatalogId switch
    {
        HaalandId=>$"/portraits/haaland-figurine-r{modelRevision}.png",
        MessiId=>$"/portraits/messi-figurine-r{modelRevision}.png",_=>null
    };
}