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
};
}