using MPF.Data; namespace MPF.Utilities { public static class Extensions { /// /// Determine the category based on the system /// /// KnownSystem value to check /// KnownSystemCategory related to the system public static KnownSystemCategory Category(this KnownSystem? system) { if (system < KnownSystem.MarkerDiscBasedConsoleEnd) return KnownSystemCategory.DiscBasedConsole; /* else if (system < KnownSystem.MarkerOtherConsoleEnd) return KnownSystemCategory.OtherConsole; */ else if (system < KnownSystem.MarkerComputerEnd) return KnownSystemCategory.Computer; else if (system < KnownSystem.MarkerArcadeEnd) return KnownSystemCategory.Arcade; else if (system < KnownSystem.MarkerOtherEnd) return KnownSystemCategory.Other; else return KnownSystemCategory.Custom; } /// /// Determine if the media supports drive speeds /// /// MediaType value to check /// True if the media has variable dumping speeds, false otherwise public static bool DoesSupportDriveSpeed(this MediaType? type) { switch (type) { case MediaType.CDROM: case MediaType.DVD: case MediaType.GDROM: case MediaType.HDDVD: case MediaType.BluRay: case MediaType.NintendoGameCubeGameDisc: case MediaType.NintendoWiiOpticalDisc: return true; default: return false; } } /// /// Determine if a system is considered audio-only /// /// KnownSystem value to check /// True if the system is audio-only, false otherwise public static bool IsAudio(this KnownSystem? system) { switch (system) { case KnownSystem.AtariJaguarCD: case KnownSystem.AudioCD: case KnownSystem.DVDAudio: case KnownSystem.HasbroVideoNow: case KnownSystem.HasbroVideoNowColor: case KnownSystem.HasbroVideoNowJr: case KnownSystem.HasbroVideoNowXP: case KnownSystem.SuperAudioCD: return true; default: return false; } } /// /// Determine if a system is a marker value /// /// KnownSystem value to check /// True if the system is a marker value, false otherwise public static bool IsMarker(this KnownSystem? system) { switch (system) { case KnownSystem.MarkerArcadeEnd: case KnownSystem.MarkerComputerEnd: case KnownSystem.MarkerDiscBasedConsoleEnd: // case KnownSystem.MarkerOtherConsoleEnd: case KnownSystem.MarkerOtherEnd: return true; default: return false; } } /// /// Determine if a system is considered XGD /// /// KnownSystem value to check /// True if the system is XGD, false otherwise public static bool IsXGD(this KnownSystem? system) { switch (system) { case KnownSystem.MicrosoftXBOX: case KnownSystem.MicrosoftXBOX360: case KnownSystem.MicrosoftXBOXOne: case KnownSystem.MicrosoftXboxSeriesXS: return true; default: return false; } } } }