Static catalog of football clubs for a soccer game. Defines a ClubDefinition record with id, name, division and crest asset name, and exposes a fixed array of 140 clubs plus lookup by id and filtering by division.
using System;
using System.Collections.Generic;
using System.Linq;
namespace Socer;
public sealed record ClubDefinition(int Id,string Name,int Division,string Asset)
{
public string Crest=>$"/crests/{Asset}.png";
}
public static class ClubCatalog
{
public static readonly ClubDefinition[] All={
new(0,"FC BARCELUNA",5,"barceluna"),new(1,"MANCASTER UNITED",5,"mancaster"),
new(2,"ROYAL MADRID",5,"royal-madrid"),new(3,"CHELFORD FC",5,"chelford"),
new(4,"LIVERPORT FC",5,"liverport"),new(5,"BAVARIA MUNICH",5,"bavaria"),
new(6,"PARIS SAINT-LUNE",5,"saint-lune"),new(7,"JUVENTRA FC",5,"juventra"),
new(8,"TOMSK TOMICHI",1,"regional-008"),
new(9,"OMSK IRTYSHIK",1,"regional-009"),
new(10,"NOVOSIBIRSK SIBIRYA",1,"regional-010"),
new(11,"BARNAUL DYNAMIK",1,"regional-011"),
new(12,"CHITA LOKOMIR",1,"regional-012"),
new(13,"KEMEROVO KUZBASSIK",1,"regional-013"),
new(14,"NOVOKUZNETSK METALLIK",1,"regional-014"),
new(15,"TYUMEN TYUMICHI",1,"regional-015"),
new(16,"KURGAN TOBOLIK",1,"regional-016"),
new(17,"CHELYABINSK CHELMET",1,"regional-017"),
new(18,"MAGNITOGORSK MAGNIT",1,"regional-018"),
new(19,"ORENBURG ORENFORT",1,"regional-019"),
new(20,"ULYANOVSK VOLGARA",1,"regional-020"),
new(21,"SARATOV SOKOLY",1,"regional-021"),
new(22,"PENZA ZENITRA",1,"regional-022"),
new(23,"TAMBOV SPARTARA",1,"regional-023"),
new(24,"LIPETSK METALLUR",1,"regional-024"),
new(25,"BRYANSK DYNAMIR",1,"regional-025"),
new(26,"SMOLENSK DNEPRIK",1,"regional-026"),
new(27,"KOSTROMA SPARTAKHA",1,"regional-027"),
new(28,"VOLOGDA DYNAMON",1,"regional-028"),
new(29,"PSKOV PSKOVICH",1,"regional-029"),
new(30,"VELIKIE LUKI LUKICH",1,"regional-030"),
new(31,"PETROZAVODSK KARELIA FC",1,"regional-031"),
new(32,"MURMANSK SEVERIK",1,"regional-032"),
new(33,"ARKHANGELSK POMOR FC",1,"regional-033"),
new(34,"IVANOVO TEKSTIL",1,"regional-034"),
new(35,"KALUGA KALUZH",1,"regional-035"),
new(36,"TULA ARSENALKA",2,"regional-036"),
new(37,"KURSK AVANGARDA",2,"regional-037"),
new(38,"BELGOROD SALYUTIK",2,"regional-038"),
new(39,"VORONEZH FAKELON",2,"regional-039"),
new(40,"ASTRAKHAN VOLGARIK",2,"regional-040"),
new(41,"VOLGOGRAD ROTORIK",2,"regional-041"),
new(42,"KAMENSK KOMETA",2,"regional-042"),
new(43,"TAGANROG CHAECHKA",2,"regional-043"),
new(44,"ROSTOV DONETS FC",2,"regional-044"),
new(45,"STAVROPOL DYNAMOLET",2,"regional-045"),
new(46,"NALCHIK SPARTALI",2,"regional-046"),
new(47,"VLADIKAVKAZ ALANYA FC",2,"regional-047"),
new(48,"NAZRAN ANGUSHTIK",2,"regional-048"),
new(49,"MAKHACHKALA ANZHIK",2,"regional-049"),
new(50,"DERBENT FORTRESS FC",2,"regional-050"),
new(51,"SOCHI ZHEMCHUZH",2,"regional-051"),
new(52,"MAYKOP DRUZHINA",2,"regional-052"),
new(53,"NOVOROSSIYSK CHERNOMIR",2,"regional-053"),
new(54,"ARMAVIR TORPEDIK",2,"regional-054"),
new(55,"VLADIVOSTOK LUCHIK",2,"regional-055"),
new(56,"KHABAROVSK SKA-AMURA",2,"regional-056"),
new(57,"YUZHNO-SAKHALINSK SAKHALINETS",2,"regional-057"),
new(58,"YAKUTSK SAKHARA FC",2,"regional-058"),
new(59,"ULAN-UDE SELENGA FC",2,"regional-059"),
new(60,"IRKUTSK BAIKALIA FC",2,"regional-060"),
new(61,"PERM AMKARA",2,"regional-061"),
new(62,"IZHEVSK ZENITKA",2,"regional-062"),
new(63,"SARANSK MORDAVA",2,"regional-063"),
new(64,"YORKMINSTER FC",3,"regional-064"),
new(65,"CHESTERFORD FC",3,"regional-065"),
new(66,"DARLINGTON VALE",3,"regional-066"),
new(67,"HEREFORD BULLS FC",3,"regional-067"),
new(68,"SCARBOROUGH SEAFARERS",3,"regional-068"),
new(69,"BOSTON BOROUGH FC",3,"regional-069"),
new(70,"BLYTH MARINERS FC",3,"regional-070"),
new(71,"TRURO COAST FC",3,"regional-071"),
new(72,"BATH SPRINGS FC",3,"regional-072"),
new(73,"TORQUAY BAY FC",3,"regional-073"),
new(74,"WOKING CARDINALS FC",3,"regional-074"),
new(75,"DOVER CLIFF FC",3,"regional-075"),
new(76,"MAIDENHEAD TOWN FC",3,"regional-076"),
new(77,"STOCKPORT VALE FC",3,"regional-077"),
new(78,"ROCHDALE HILLS FC",3,"regional-078"),
new(79,"OLDHAM OWLETS FC",3,"regional-079"),
new(80,"SCUNTHORPE STEEL FC",3,"regional-080"),
new(81,"YEOVIL GREEN FC",3,"regional-081"),
new(82,"NEWPORT DOCK FC",3,"regional-082"),
new(83,"WREXHAM VALE FC",3,"regional-083"),
new(84,"DUNDEE THISTLE FC",3,"regional-084"),
new(85,"INVERNESS GLEN FC",3,"regional-085"),
new(86,"AYR COASTAL FC",3,"regional-086"),
new(87,"SLIGO HARBOURS FC",3,"regional-087"),
new(88,"GALWAY MARINERS FC",3,"regional-088"),
new(89,"CORK EMERALD FC",3,"regional-089"),
new(90,"LIMERICK RIVER FC",3,"regional-090"),
new(91,"WATERFORD QUAYS FC",3,"regional-091"),
new(92,"ROUEN DRAGONS FC",4,"regional-092"),
new(93,"DIJON MUSTARD FC",4,"regional-093"),
new(94,"NIMES CROCODILES FC",4,"regional-094"),
new(95,"NANCY LORRAINE FC",4,"regional-095"),
new(96,"METZELLE FC",4,"regional-096"),
new(97,"AUXERRE ABBEY FC",4,"regional-097"),
new(98,"SOCHAUX LIONS FC",4,"regional-098"),
new(99,"TROYES AUBE FC",4,"regional-099"),
new(100,"BASTIA CORSICA FC",4,"regional-100"),
new(101,"AJACCIO MOUNTAIN FC",4,"regional-101"),
new(102,"PAU PYRENEES FC",4,"regional-102"),
new(103,"GRENOBLE ALPS FC",4,"regional-103"),
new(104,"OSNABRUCK VIOLET FC",4,"regional-104"),
new(105,"AUE MINERS FC",4,"regional-105"),
new(106,"ZWICKAU SWANS FC",4,"regional-106"),
new(107,"CHEMNITZ SKY FC",4,"regional-107"),
new(108,"JENA ZEISSIK FC",4,"regional-108"),
new(109,"HALLE RED FC",4,"regional-109"),
new(110,"ERFURT ROTSTADT FC",4,"regional-110"),
new(111,"COTTBUS ENERGIA FC",4,"regional-111"),
new(112,"LUBECK GREEN FC",4,"regional-112"),
new(113,"OLDENBURG BLUE FC",4,"regional-113"),
new(114,"TRIESTE ALABARDA FC",4,"regional-114"),
new(115,"PADOVA CROSS FC",4,"regional-115"),
new(116,"VICENZA STRIPES FC",4,"regional-116"),
new(117,"ANCONA ADRIATIC FC",4,"regional-117"),
new(118,"PERUGIA GRIFFINS FC",4,"regional-118"),
new(119,"PESCARA DOLPHINS FC",4,"regional-119"),
new(120,"ATHLETICO MADRIVA",5,"regional-120"),
new(121,"SEVILLONA FC",5,"regional-121"),
new(122,"VALENTIA BATS FC",5,"regional-122"),
new(123,"VILLAROSA FC",5,"regional-123"),
new(124,"REAL BETIRA FC",5,"regional-124"),
new(125,"REAL SOCIERA FC",5,"regional-125"),
new(126,"ATHLETIC BILBORA",5,"regional-126"),
new(127,"FC PORTORA",5,"regional-127"),
new(128,"BENFIRA LISBON",5,"regional-128"),
new(129,"SPORTING LISBONA",5,"regional-129"),
new(130,"AJAXA AMSTERDAM",5,"regional-130"),
new(131,"PSV EINDHORST",5,"regional-131"),
new(132,"FEYENORA ROTTERDAM",5,"regional-132"),
new(133,"CELTARA GLASGOW",5,"regional-133"),
new(134,"RANGERFORD FC",5,"regional-134"),
new(135,"GALATARAY ISTANBUL",5,"regional-135"),
new(136,"FENERBAHARA SK",5,"regional-136"),
new(137,"BESIKTARA JK",5,"regional-137"),
new(138,"ZENITRA PETERSBURG",5,"regional-138"),
new(139,"SPARTARA MOSCOW",5,"regional-139"),
};
public static ClubDefinition Get(int id)=>All[Math.Clamp(id,0,All.Length-1)];
public static IEnumerable<ClubDefinition> Pool(int division)=>All.Where(c=>c.Id!=0 && c.Division==division);
}