LegendaryPlayerCatalog.cs

Part of the static PlayerCatalog. Builds four hardcoded historical player cards (Ibrahimović, Pirlo, Maldini, Buffon) and returns them by catalog id, with a separate map for the red-edition identities.

using System;
using System.Collections.Generic;

namespace Socer;

public static partial class PlayerCatalog
{
    // Source identities for historical red editions. They are not ordinary
    // pack/rival entries: the first wave has authored red artwork only.
    static Dictionary<string,PlayerCard> historicalIdentities;
    static PlayerCard FindHistorical(string id)
    {
        if(id is not ("PRO-54" or "PRO-55" or "PRO-56" or "PRO-57"))return null;
        historicalIdentities??=BuildHistoricalIdentities();
        return historicalIdentities[id];
    }
    static Dictionary<string,PlayerCard> BuildHistoricalIdentities()
    {
        var result=new Dictionary<string,PlayerCard>(StringComparer.Ordinal);
        Add("PRO-54","Zlatan Ibrahimović","Sweden","SE","🇸🇪","НП","ST",84,92,82,90,36,93,83,12,88,94,195,4,5,1,0,5,0);
        Add("PRO-55","Andrea Pirlo","Italy","IT","🇮🇹","ЦП","CM",70,82,94,88,66,69,85,12,64,95,177,4,4,1,0,1,0);
        Add("PRO-56","Paolo Maldini","Italy","IT","🇮🇹","ЦЗ","CB",86,58,77,75,95,88,90,12,80,94,186,4,3,1,0,1,2);
        Add("PRO-57","Gianluigi Buffon","Italy","IT","🇮🇹","ВР","GK",58,14,78,29,19,81,75,94,62,94,192,3,1,1,0,2,2);
        return result;

        void Add(string id,string name,string country,string code,string flag,string role,string preferred,
            int pace,int shooting,int passing,int dribbling,int defence,int physical,int endurance,int keeping,int aggression,int composure,
            int height,int weakFoot,int skillMoves,int skin,int hair,int style,int beard)
        {
            var card=new PlayerCard{CatalogId=id,Name=name,Country=country,CountryCode=code,Flag=flag,Position=role,PreferredPosition=preferred,
                Pace=pace,Shooting=shooting,Passing=passing,Dribbling=dribbling,Defence=defence,Physical=physical,Endurance=endurance,
                Keeping=keeping,Aggression=aggression,Composure=composure,HeightCm=height,Age=29,Foot="Right",WeakFoot=weakFoot,SkillMoves=skillMoves,
                PortraitSkin=skin,PortraitHair=hair,PortraitStyle=style,PortraitBeard=beard};
            CardDevelopment.Initialize(card);card.Details=PlayerCardDetails.Generate(card);result.Add(id,card);
        }
    }
}