From bcfad7fa34fbdb4f64d854e3a7a2475f5ccc5708 Mon Sep 17 00:00:00 2001 From: goyuken Date: Mon, 14 Jul 2014 19:56:52 +0000 Subject: [PATCH] profileconfig cleanup --- .../config/ProfileConfig.cs | 126 ++++++++++++------ 1 file changed, 83 insertions(+), 43 deletions(-) diff --git a/BizHawk.Client.EmuHawk/config/ProfileConfig.cs b/BizHawk.Client.EmuHawk/config/ProfileConfig.cs index 7bf7098c27..b826701ff0 100644 --- a/BizHawk.Client.EmuHawk/config/ProfileConfig.cs +++ b/BizHawk.Client.EmuHawk/config/ProfileConfig.cs @@ -42,7 +42,7 @@ namespace BizHawk.Client.EmuHawk //If custom profile, check all the checkboxes //Save to config.ini } - + DialogResult = DialogResult.OK; Close(); } @@ -68,43 +68,43 @@ namespace BizHawk.Client.EmuHawk Global.Config.RewindEnabledSmall = true; // N64 - var n64Settings = GetN64SyncSettings(); + var n64Settings = GetSyncSettings(); n64Settings.RspType = N64SyncSettings.RSPTYPE.Rsp_Hle; n64Settings.CoreType = N64SyncSettings.CORETYPE.Dynarec; Global.Config.N64UseCircularAnalogConstraint = true; - PutN64SyncSettings(n64Settings); + PutSyncSettings(n64Settings); // SNES - var snesSettings = GetSnesSyncSettings(); + var snesSettings = GetSyncSettings(); snesSettings.Profile = "Performance"; - PutSnesSyncSettings(snesSettings); + PutSyncSettings(snesSettings); //Saturn - var saturnSettings = GetSaturnSyncSettings(); + var saturnSettings = GetSyncSettings(); saturnSettings.SkipBios = false; - PutSaturnSyncSettings(saturnSettings); + PutSyncSettings(saturnSettings); //Genesis - var genesisSettings = GetGenesisSyncSettings(); + var genesisSettings = GetSyncSettings(); genesisSettings.Region = LibGPGX.Region.Autodetect; - PutGenesisSyncSettings(genesisSettings); + PutSyncSettings(genesisSettings); //SMS - var smsSettings = GetSMSSyncSettings(); + var smsSettings = GetSyncSettings(); smsSettings.UseBIOS = false; - PutSMSSyncSettings(smsSettings); + PutSyncSettings(smsSettings); //Coleco - var colecoSettings = GetColecoVisionSyncSettings(); + var colecoSettings = GetSyncSettings(); colecoSettings.SkipBiosIntro = false; - PutColecoVisionSyncSettings(colecoSettings); + PutSyncSettings(colecoSettings); //A2600 - var a2600Settings = GetA2600SyncSettings(); + var a2600Settings = GetSyncSettings(); a2600Settings.FastScBios = true; a2600Settings.LeftDifficulty = false; a2600Settings.RightDifficulty = false; - PutA2600SyncSettings(a2600Settings); + PutSyncSettings(a2600Settings); // NES Global.Config.NES_InQuickNES = true; @@ -122,43 +122,43 @@ namespace BizHawk.Client.EmuHawk Global.Config.RewindEnabledSmall = true; // N64 - var n64Settings = GetN64SyncSettings(); + var n64Settings = GetSyncSettings(); n64Settings.RspType = N64SyncSettings.RSPTYPE.Rsp_Z64_hlevideo; n64Settings.CoreType = N64SyncSettings.CORETYPE.Pure_Interpret; Global.Config.N64UseCircularAnalogConstraint = true; - PutN64SyncSettings(n64Settings); + PutSyncSettings(n64Settings); // SNES - var snesSettings = GetSnesSyncSettings(); + var snesSettings = GetSyncSettings(); snesSettings.Profile = "Compatibility"; - PutSnesSyncSettings(snesSettings); + PutSyncSettings(snesSettings); // Saturn - var saturnSettings = GetSaturnSyncSettings(); + var saturnSettings = GetSyncSettings(); saturnSettings.SkipBios = false; - PutSaturnSyncSettings(saturnSettings); + PutSyncSettings(saturnSettings); // Genesis - var genesisSettings = GetGenesisSyncSettings(); + var genesisSettings = GetSyncSettings(); genesisSettings.Region = LibGPGX.Region.Autodetect; - PutGenesisSyncSettings(genesisSettings); + PutSyncSettings(genesisSettings); // SMS - var smsSettings = GetSMSSyncSettings(); + var smsSettings = GetSyncSettings(); smsSettings.UseBIOS = false; - PutSMSSyncSettings(smsSettings); + PutSyncSettings(smsSettings); // Coleco - var colecoSettings = GetColecoVisionSyncSettings(); + var colecoSettings = GetSyncSettings(); colecoSettings.SkipBiosIntro = false; - PutColecoVisionSyncSettings(colecoSettings); + PutSyncSettings(colecoSettings); // A2600 - var a2600Settings = GetA2600SyncSettings(); + var a2600Settings = GetSyncSettings(); a2600Settings.FastScBios = false; a2600Settings.LeftDifficulty = true; a2600Settings.RightDifficulty = true; - PutA2600SyncSettings(a2600Settings); + PutSyncSettings(a2600Settings); // NES Global.Config.NES_InQuickNES = true; @@ -179,43 +179,43 @@ namespace BizHawk.Client.EmuHawk Global.Config.RewindEnabledSmall = false; // N64 - var n64Settings = GetN64SyncSettings(); + var n64Settings = GetSyncSettings(); n64Settings.RspType = N64SyncSettings.RSPTYPE.Rsp_Z64_hlevideo; n64Settings.CoreType = N64SyncSettings.CORETYPE.Pure_Interpret; Global.Config.N64UseCircularAnalogConstraint = false; - PutN64SyncSettings(n64Settings); + PutSyncSettings(n64Settings); // SNES - var snesSettings = GetSnesSyncSettings(); + var snesSettings = GetSyncSettings(); snesSettings.Profile = "Compatibility"; - PutSnesSyncSettings(snesSettings); + PutSyncSettings(snesSettings); // Saturn - var saturnSettings = GetSaturnSyncSettings(); + var saturnSettings = GetSyncSettings(); saturnSettings.SkipBios = true; - PutSaturnSyncSettings(saturnSettings); + PutSyncSettings(saturnSettings); // Genesis - var genesisSettings = GetGenesisSyncSettings(); + var genesisSettings = GetSyncSettings(); genesisSettings.Region = LibGPGX.Region.Autodetect; - PutGenesisSyncSettings(genesisSettings); + PutSyncSettings(genesisSettings); // SMS - var smsSettings = GetSMSSyncSettings(); + var smsSettings = GetSyncSettings(); smsSettings.UseBIOS = false; - PutSMSSyncSettings(smsSettings); + PutSyncSettings(smsSettings); // Coleco - var colecoSettings = GetColecoVisionSyncSettings(); + var colecoSettings = GetSyncSettings(); colecoSettings.SkipBiosIntro = true; - PutColecoVisionSyncSettings(colecoSettings); + PutSyncSettings(colecoSettings); // A2600 - var a2600Settings = GetA2600SyncSettings(); + var a2600Settings = GetSyncSettings(); a2600Settings.FastScBios = false; a2600Settings.LeftDifficulty = true; a2600Settings.RightDifficulty = true; - PutA2600SyncSettings(a2600Settings); + PutSyncSettings(a2600Settings); // NES Global.Config.NES_InQuickNES = true; @@ -265,6 +265,45 @@ namespace BizHawk.Client.EmuHawk #region Core specific Config setting helpers + private static TSetting GetSyncSettings() + where TSetting : class, new() + where TEmulator : BizHawk.Emulation.Common.IEmulator + { + // should we complain if we get a successful object from the config file, but it is the wrong type? + return Global.Emulator.GetSyncSettings() as TSetting + ?? Global.Config.GetCoreSyncSettings() as TSetting + ?? new TSetting(); // guaranteed to give sensible defaults + } + + private static TSetting GetSettings() + where TSetting : class, new() + where TEmulator : BizHawk.Emulation.Common.IEmulator + { + // should we complain if we get a successful object from the config file, but it is the wrong type? + return Global.Emulator.GetSettings() as TSetting + ?? Global.Config.GetCoreSettings() as TSetting + ?? new TSetting(); // guaranteed to give sensible defaults + } + + private static void PutSettings(object o) + where TEmulator : BizHawk.Emulation.Common.IEmulator + { + if (Global.Emulator is TEmulator) + Global.Emulator.PutSettings(o); + else + Global.Config.PutCoreSettings(o); + } + + private static void PutSyncSettings(object o) + where TEmulator : BizHawk.Emulation.Common.IEmulator + { + if (Global.Emulator is TEmulator) + GlobalWin.MainForm.PutCoreSyncSettings(o); + else + Global.Config.PutCoreSyncSettings(o); + } + + /* // Unfortunatley there is not yet a generic way to match a sync setting object with its core implementation, so we need a bunch of these private static N64SyncSettings GetN64SyncSettings() { @@ -440,6 +479,7 @@ namespace BizHawk.Client.EmuHawk Global.Config.PutCoreSyncSettings(s); } } + */ #endregion } }