private void GetRenderers() { renderers = new List <DirectDrawWrapper>(); var renderersIni = new IniFile(ProgramConstants.GetBaseResourcePath() + RENDERERS_INI); var keys = renderersIni.GetSectionKeys("Renderers"); if (keys == null) { throw new Exception("[Renderers] not found from Renderers.ini!"); } foreach (string key in keys) { string internalName = renderersIni.GetStringValue("Renderers", key, string.Empty); var ddWrapper = new DirectDrawWrapper(internalName, renderersIni); renderers.Add(ddWrapper); } OSVersion osVersion = ClientConfiguration.Instance.GetOperatingSystemVersion(); defaultRenderer = renderersIni.GetStringValue("DefaultRenderer", osVersion.ToString(), string.Empty); if (defaultRenderer == null) { throw new Exception("Invalid or missing default renderer for operating system: " + osVersion); } }
private void GetRenderers() { renderers = new List <DirectDrawWrapper>(); var renderersIni = new IniFile(ProgramConstants.GetBaseResourcePath() + RENDERERS_INI); var keys = renderersIni.GetSectionKeys("Renderers"); if (keys == null) { throw new Exception("[Renderers] not found from Renderers.ini!"); } foreach (string key in keys) { string internalName = renderersIni.GetStringValue("Renderers", key, string.Empty); var ddWrapper = new DirectDrawWrapper(internalName, renderersIni); renderers.Add(ddWrapper); } OSVersion osVersion = ClientConfiguration.Instance.GetOperatingSystemVersion(); defaultRenderer = renderersIni.GetStringValue("DefaultRenderer", osVersion.ToString(), string.Empty); if (defaultRenderer == null) { throw new Exception("Invalid or missing default renderer for operating system: " + osVersion); } string renderer = UserINISettings.Instance.Renderer; selectedRenderer = renderers.Find(r => r.InternalName == renderer); if (selectedRenderer == null) { selectedRenderer = renderers.Find(r => r.InternalName == defaultRenderer); } if (selectedRenderer == null) { throw new Exception("Missing renderer: " + renderer); } GameProcessLogic.UseQres = selectedRenderer.UseQres; GameProcessLogic.SingleCoreAffinity = selectedRenderer.SingleCoreAffinity; }
public override bool Save() { base.Save(); bool restartRequired = false; IniSettings.DetailLevel.Value = ddDetailLevel.SelectedIndex; string[] resolution = ddIngameResolution.SelectedItem.Text.Split('x'); int[] ingameRes = new int[2] { int.Parse(resolution[0]), int.Parse(resolution[1]) }; IniSettings.IngameScreenWidth.Value = ingameRes[0]; IniSettings.IngameScreenHeight.Value = ingameRes[1]; // Calculate drag selection distance, scale it with resolution width int dragDistance = ingameRes[0] / ORIGINAL_RESOLUTION_WIDTH * DRAG_DISTANCE_DEFAULT; IniSettings.DragDistance.Value = dragDistance; DirectDrawWrapper originalRenderer = selectedRenderer; selectedRenderer = (DirectDrawWrapper)ddRenderer.SelectedItem.Tag; IniSettings.WindowedMode.Value = chkWindowedMode.Checked && !selectedRenderer.UsesCustomWindowedOption(); IniSettings.BorderlessWindowedMode.Value = chkBorderlessWindowedMode.Checked && string.IsNullOrEmpty(selectedRenderer.BorderlessWindowedModeKey); string[] clientResolution = ((string)ddClientResolution.SelectedItem.Tag).Split('x'); int[] clientRes = new int[2] { int.Parse(clientResolution[0]), int.Parse(clientResolution[1]) }; IniSettings.ClientResolutionX.Value = clientRes[0]; IniSettings.ClientResolutionY.Value = clientRes[1]; if (clientRes[0] != WindowManager.WindowWidth || clientRes[1] != WindowManager.WindowHeight) { restartRequired = true; } if (IniSettings.BorderlessWindowedClient.Value != chkBorderlessClient.Checked) { restartRequired = true; } IniSettings.BorderlessWindowedClient.Value = chkBorderlessClient.Checked; if (IniSettings.ClientTheme != ddClientTheme.SelectedItem.Text) { restartRequired = true; } IniSettings.ClientTheme.Value = ddClientTheme.SelectedItem.Text; #if YR IniSettings.BackBufferInVRAM.Value = chkBackBufferInVRAM.Checked; #else IniSettings.BackBufferInVRAM.Value = !chkBackBufferInVRAM.Checked; #endif if (selectedRenderer != originalRenderer || !File.Exists(ProgramConstants.GamePath + selectedRenderer.ConfigFileName)) { foreach (var renderer in renderers) { if (renderer != selectedRenderer) { renderer.Clean(); } } } selectedRenderer.Apply(); GameProcessLogic.UseQres = selectedRenderer.UseQres; GameProcessLogic.SingleCoreAffinity = selectedRenderer.SingleCoreAffinity; if (selectedRenderer.UsesCustomWindowedOption()) { IniFile rendererSettingsIni = new IniFile( ProgramConstants.GamePath + selectedRenderer.ConfigFileName); rendererSettingsIni.SetBooleanValue(selectedRenderer.WindowedModeSection, selectedRenderer.WindowedModeKey, chkWindowedMode.Checked); if (!string.IsNullOrEmpty(selectedRenderer.BorderlessWindowedModeKey)) { bool borderlessModeIniValue = chkBorderlessWindowedMode.Checked; if (selectedRenderer.IsBorderlessWindowedModeKeyReversed) { borderlessModeIniValue = !borderlessModeIniValue; } rendererSettingsIni.SetBooleanValue(selectedRenderer.WindowedModeSection, selectedRenderer.BorderlessWindowedModeKey, borderlessModeIniValue); } rendererSettingsIni.WriteIniFile(); } IniSettings.Renderer.Value = selectedRenderer.InternalName; #if !YR File.Delete(ProgramConstants.GamePath + "Language.dll"); if (ingameRes[0] >= 1024 && ingameRes[1] >= 720) { File.Copy(ProgramConstants.GamePath + "Resources\\language_1024x720.dll", ProgramConstants.GamePath + "Language.dll"); } else if (ingameRes[0] >= 800 && ingameRes[1] >= 600) { File.Copy(ProgramConstants.GamePath + "Resources\\language_800x600.dll", ProgramConstants.GamePath + "Language.dll"); } else { File.Copy(ProgramConstants.GamePath + "Resources\\language_640x480.dll", ProgramConstants.GamePath + "Language.dll"); } #endif return(restartRequired); }