Flags enum of retired play style identifiers plus a static PlayerPlayStyles facade. All lookups and grades return empty or None values so older save data still compiles and loads.
using System;
using System.Collections.Generic;
namespace Socer;
// Retired save-data identifiers. Keep their numeric values so old careers can
// still be read; UniqueSkill is the only ability system used by the match.
[Flags] public enum PlayStyle : long {
None=0, PowerShot=1L<<0, FinesseShot=1L<<1, ChipShot=1L<<2,
IncisivePass=1L<<3, TikiTaka=1L<<4, LongBallPass=1L<<5,
Intercept=1L<<6, Block=1L<<7, FirstTouch=1L<<8, Technical=1L<<9,
QuickStep=1L<<10, PrecisionHeader=1L<<11, FarReach=1L<<12,
DeadBall=1L<<13, Acrobatic=1L<<14, LowDrivenShot=1L<<15, Gamechanger=1L<<16,
PingedPass=1L<<17, WhippedPass=1L<<18, Inventive=1L<<19, Jockey=1L<<20,
Anticipate=1L<<21, SlideTackle=1L<<22, AerialFortress=1L<<23,
Rapid=1L<<24, Trickster=1L<<25, PressProven=1L<<26, Relentless=1L<<27,
LongThrow=1L<<28, Bruiser=1L<<29, Enforcer=1L<<30, FarThrow=1L<<31,
Footwork=1L<<32, CrossClaimer=1L<<33, RushOut=1L<<34, Deflector=1L<<35,
Aerial=PrecisionHeader
}
public enum PlayStyleGrade { None, PlayStyle, PlayStylePlus }
public sealed record PlayStyleInfo(PlayStyle Style,string Group,string Name,string Icon,string Effect);
// Compatibility facade for old callers and DTOs. Every legacy effect is inert,
// including flags already present in an active match during editor hotload.
public static class PlayerPlayStyles {
public static PlayStyleInfo[] All=>Array.Empty<PlayStyleInfo>();
public static PlayStyle Get(PlayerCard card)=>PlayStyle.None;
public static PlayStyleGrade Grade(PlayerCard card,PlayStyle style)=>PlayStyleGrade.None;
public static bool Has(PlayerCard card,PlayStyle style)=>false;
public static PlayStyleGrade Grade(Footballer player,PlayStyle style)=>PlayStyleGrade.None;
public static bool Has(Footballer player,PlayStyle style)=>false;
public static IEnumerable<PlayStyleInfo> Active(PlayerCard card)=>Array.Empty<PlayStyleInfo>();
public static PlayStyle LegacyDerived(PlayerCard card)=>PlayStyle.None;
}