namespace PKHeX.Core;
///
/// Game Version ID enum shared between actual Version IDs and lumped version groupings.
///
public enum GameVersion : byte
{
#region Indicators for method empty arguments & result indication. Not stored values.
Any = 0,
Unknown = byte.MaxValue - 1,
Invalid = byte.MaxValue,
#endregion
// The following values are IDs stored within PKM data, and can also identify individual games.
#region Gen3
///
/// Pokémon Sapphire (GBA)
///
S = 1,
///
/// Pokémon Ruby (GBA)
///
R = 2,
///
/// Pokémon Emerald (GBA)
///
E = 3,
///
/// Pokémon FireRed (GBA)
///
FR = 4,
///
/// Pokémon LeafGreen (GBA)
///
LG = 5,
///
/// Pokémon Colosseum & Pokémon XD (GameCube)
///
CXD = 15,
#endregion
#region Gen4
///
/// Pokémon Diamond (NDS)
///
D = 10,
///
/// Pokémon Pearl (NDS)
///
P = 11,
///
/// Pokémon Platinum (NDS)
///
Pt = 12,
///
/// Pokémon HeartGold (NDS)
///
HG = 7,
///
/// Pokémon SoulSilver (NDS)
///
SS = 8,
#endregion
#region Gen5
///
/// Pokémon White (NDS)
///
W = 20,
///
/// Pokémon Black (NDS)
///
B = 21,
///
/// Pokémon White 2 (NDS)
///
W2 = 22,
///
/// Pokémon Black 2 (NDS)
///
B2 = 23,
#endregion
#region Gen6
///
/// Pokémon X (3DS)
///
X = 24,
///
/// Pokémon Y (3DS)
///
Y = 25,
///
/// Pokémon Alpha Sapphire (3DS)
///
AS = 26,
///
/// Pokémon Omega Ruby (3DS)
///
OR = 27,
#endregion
#region Gen7
///
/// Pokémon Sun (3DS)
///
SN = 30,
///
/// Pokémon Moon (3DS)
///
MN = 31,
///
/// Pokémon Ultra Sun (3DS)
///
US = 32,
///
/// Pokémon Ultra Moon (3DS)
///
UM = 33,
#endregion
///
/// Pokémon GO (GO -> Let's Go/HOME transfers)
///
GO = 34,
#region Virtual Console (3DS) Gen1
///
/// Pokémon Red (3DS Virtual Console)
///
RD = 35,
///
/// Pokémon Green[JP]/Blue[INT] (3DS Virtual Console)
///
GN = 36,
///
/// Pokémon Blue[JP] (3DS Virtual Console)
///
BU = 37,
///
/// Pokémon Yellow [JP] (3DS Virtual Console)
///
YW = 38,
#endregion
#region Virtual Console (3DS) Gen2
///
/// Pokémon Gold (3DS Virtual Console)
///
GD = 39,
///
/// Pokémon Silver (3DS Virtual Console)
///
SI = 40,
///
/// Pokémon Crystal (3DS Virtual Console)
///
C = 41,
#endregion
#region Nintendo Switch
///
/// Pokémon: Let's Go, Pikachu! (NX)
///
GP = 42,
///
/// Pokémon: Let's Go, Eevee! (NX)
///
GE = 43,
///
/// Pokémon Sword (NX)
///
SW = 44,
///
/// Pokémon Shield (NX)
///
SH = 45,
// HOME = 46,
///
/// Pokémon Legends: Arceus (NX)
///
PLA = 47,
///
/// Pokémon Brilliant Diamond (NX)
///
BD = 48,
///
/// Pokémon Shining Pearl (NX)
///
SP = 49,
///
/// Pokémon Scarlet (NX)
///
SL = 50,
///
/// Pokémon Violet (NX)
///
VL = 51,
#endregion
// The following values are not actually stored values in pk data,
// These values are assigned within PKHeX as properties for various logic branching.
#region Game Groupings (SaveFile type, roughly)
///
/// Pokémon Red & Blue [] identifier.
///
///
///
///
RB,
///
/// Pokémon Red/Blue/Yellow [] identifier.
///
///
///
///
///
RBY,
///
/// Pokémon Gold & Silver [] identifier.
///
///
///
GS,
///
/// Pokémon Gold/Silver/Crystal [] identifier.
///
///
///
///
GSC,
///
/// Pokémon Ruby & Sapphire [] identifier.
///
///
///
RS,
///
/// Pokémon Ruby/Sapphire/Emerald [] identifier.
///
///
///
///
RSE,
///
/// Pokémon FireRed/LeafGreen [] identifier.
///
///
///
FRLG,
///
/// Pokémon Box Ruby & Sapphire [] identifier.
///
RSBOX,
///
/// Pokémon Colosseum [] identifier.
///
///
/// Also used to mark Colosseum-only origin data as this game shares a version ID with
COLO,
///
/// Pokémon XD [] identifier.
///
///
/// Also used to mark XD-only origin data as this game shares a version ID with
XD,
///
/// Pokémon Diamond & Pearl [] identifier.
///
///
///
DP,
///
/// Pokémon Diamond/Pearl/Platinum version group.
///
/// Used to lump data from the associated games as data assets are shared.
///
///
///
DPPt,
///
/// Pokémon HeartGold & SoulSilver [] identifier.
///
///
///
HGSS,
///
/// Pokémon Battle Revolution [] identifier.
///
BATREV,
///
/// Pokémon Black & White version group.
///
/// Used to lump data from the associated games as data assets are shared.
///
///
BW,
///
/// Pokémon Black 2 & White 2 version group.
///
/// Used to lump data from the associated games as data assets are shared.
///
///
B2W2,
///
/// Pokémon X & Y
///
/// Used to lump data from the associated games as data assets are shared.
///
///
XY,
///
/// Pokémon Omega Ruby & Alpha Sapphire Demo [] identifier.
///
///
ORASDEMO,
///
/// Pokémon Omega Ruby & Alpha Sapphire version group.
///
/// Used to lump data from the associated games as data assets are shared.
///
///
ORAS,
///
/// Pokémon Sun & Moon
///
/// Used to lump data from the associated games as data assets are shared.
///
///
SM,
///
/// Pokémon Ultra Sun & Ultra Moon
///
/// Used to lump data from the associated games as data assets are shared.
///
///
USUM,
///
/// Pokémon Let's Go Pikachu & Eevee
///
/// Used to lump data from the associated games as data assets are shared.
///
///
GG,
///
/// Pokémon Sword & Shield
///
/// Used to lump data from the associated games as data assets are shared.
///
///
SWSH,
///
/// Pokémon Brilliant Diamond & Shining Pearl
///
/// Used to lump data from the associated games as data assets are shared.
///
///
BDSP,
///
/// Pokémon Scarlet & Violet
///
/// Used to lump data from the associated games as data assets are shared.
///
///
SV,
///
/// Generation 1 Games
///
///
Gen1,
///
/// Generation 2 Games
///
///
Gen2,
///
/// Generation 3 Games
///
///
///
Gen3,
///
/// Generation 4 Games
///
///
///
Gen4,
///
/// Generation 5 Games
///
///
///
Gen5,
///
/// Generation 6 Games
///
///
///
Gen6,
///
/// Generation 7 Games on the Nintendo 3DS
///
///
///
Gen7,
///
/// Generation 7 Games on the Nintendo Switch
///
///
///
Gen7b,
///
/// Generation 8 Games
///
///
///
///
Gen8,
///
/// Generation 9 Games
///
///
Gen9,
///
/// Pocket Monsters Stadium data origin identifier
///
StadiumJ,
///
/// Pokémon Stadium data origin identifier
///
Stadium,
///
/// Pokémon Stadium 2 data origin identifier
///
Stadium2,
#endregion
}