namespace PKHeX.Core;
///
/// analogues used by Colosseum/XD instead of the main-series values.
///
public enum GCVersion : byte
{
None = 0,
FR = 1,
LG = 2,
S = 8,
R = 9,
E = 10,
CXD = 11,
}
///
/// Console region analogues used by Colosseum/XD to track the region of the data.
///
public enum GCRegion : byte
{
NoRegion = 0,
NTSC_J = 1,
NTSC_U = 2,
PAL = 3,
}
///
/// Extension methods for and .
///
public static class GCVersionExtensions
{
///
/// Translates a main-series to the corresponding value.
///
/// Version ID while present in the main-series games
/// Version ID while present in the GameCube games
public static GCVersion GetCXDVersionID(this GameVersion gbaVersion) => gbaVersion switch
{
GameVersion.S => GCVersion.S,
GameVersion.R => GCVersion.R,
GameVersion.E => GCVersion.E,
GameVersion.FR => GCVersion.FR,
GameVersion.LG => GCVersion.LG,
GameVersion.CXD => GCVersion.CXD,
_ => GCVersion.None,
};
///
/// Translates a to the corresponding main-series value.
///
/// Version ID while present in the GameCube games
/// Version ID while present in the main-series games
public static GameVersion GetG3VersionID(this GCVersion gcVersion) => gcVersion switch
{
GCVersion.S => GameVersion.S,
GCVersion.R => GameVersion.R,
GCVersion.E => GameVersion.E,
GCVersion.FR => GameVersion.FR,
GCVersion.LG => GameVersion.LG,
GCVersion.CXD => GameVersion.CXD,
_ => GameVersion.Unknown,
};
}