1
0
mirror of https://github.com/ncblakely/GiantsTools synced 2024-11-21 21:55:38 +01:00

Fix rare crash when populating AA/aniso options.

This commit is contained in:
Nick Blakely 2020-08-16 01:32:49 -07:00
parent af7f1f21c9
commit 66b9ff5704

View File

@ -20,14 +20,20 @@ namespace Giants.Launcher
private void OptionsForm_Load(object sender, EventArgs e) private void OptionsForm_Load(object sender, EventArgs e)
{ {
this.PopulateResolution(); // Must come first as other options depend on it
this.PopulateRenderers();
this.PopulateResolution();
this.PopulateAnisotropy();
this.PopulateAntialiasing();
this.SetOptions(); this.SetOptions();
} }
private void SetOptions() private void PopulateRenderers()
{ {
this.cmbRenderer.Items.Clear(); this.cmbRenderer.Items.Clear();
this.cmbRenderer.Items.AddRange( this.cmbRenderer.Items.AddRange(
GameSettings.CompatibleRenderers GameSettings.CompatibleRenderers
.Disambiguate() .Disambiguate()
.ToList() .ToList()
@ -38,26 +44,29 @@ namespace Giants.Launcher
if (renderer != null) if (renderer != null)
{ {
this.cmbRenderer.SelectedItem = renderer; this.cmbRenderer.SelectedItem = renderer;
} }
else else
{ {
renderer = GameSettings.CompatibleRenderers.Find(r => r.Name == "DirectX 7"); renderer = GameSettings.CompatibleRenderers.Find(r => r.Name == "DirectX 7");
this.cmbRenderer.SelectedItem = renderer; this.cmbRenderer.SelectedItem = renderer;
} }
}
private void SetOptions()
{
var resolutions = (List<ScreenResolution>)this.cmbResolution.DataSource; var resolutions = (List<ScreenResolution>)this.cmbResolution.DataSource;
this.cmbResolution.SelectedItem = resolutions.Find(r => r.Width == GameSettings.Get<int>(SettingKeys.VideoWidth) && r.Height == GameSettings.Get<int>(SettingKeys.VideoHeight)); this.cmbResolution.SelectedItem = resolutions.Find(r => r.Width == GameSettings.Get<int>(SettingKeys.VideoWidth) && r.Height == GameSettings.Get<int>(SettingKeys.VideoHeight));
if (this.cmbResolution.SelectedItem == null) if (this.cmbResolution.SelectedItem == null)
this.cmbResolution.SelectedIndex = 0; this.cmbResolution.SelectedIndex = 0;
var AntialiasingOptions = (List<KeyValuePair<string, int>>)this.cmbAntialiasing.DataSource; var antialiasingOptions = (List<KeyValuePair<string, int>>)this.cmbAntialiasing.DataSource;
this.cmbAntialiasing.SelectedItem = AntialiasingOptions.Find(o => o.Value == GameSettings.Get<int>(SettingKeys.Antialiasing)); this.cmbAntialiasing.SelectedItem = antialiasingOptions.Find(o => o.Value == GameSettings.Get<int>(SettingKeys.Antialiasing));
if (this.cmbAntialiasing.SelectedItem == null) if (this.cmbAntialiasing.SelectedItem == null)
this.cmbAntialiasing.SelectedIndex = 0; this.cmbAntialiasing.SelectedIndex = 0;
var AnisotropyOptions = (List<KeyValuePair<string, int>>)this.cmbAnisotropy.DataSource; var anisotropyOptions = (List<KeyValuePair<string, int>>)this.cmbAnisotropy.DataSource;
this.cmbAnisotropy.SelectedItem = AnisotropyOptions.Find(o => o.Value == GameSettings.Get<int>(SettingKeys.AnisotropicFiltering)); this.cmbAnisotropy.SelectedItem = anisotropyOptions.Find(o => o.Value == GameSettings.Get<int>(SettingKeys.AnisotropicFiltering));
if (this.cmbAnisotropy.SelectedItem == null) if (this.cmbAnisotropy.SelectedItem == null)
this.cmbAnisotropy.SelectedIndex = 0; this.cmbAnisotropy.SelectedIndex = 0;
@ -169,9 +178,6 @@ namespace Giants.Launcher
private void cmbRenderer_SelectedIndexChanged(object sender, EventArgs e) private void cmbRenderer_SelectedIndexChanged(object sender, EventArgs e)
{ {
this.PopulateAntialiasing();
this.PopulateAnisotropy();
bool windowed = GameSettings.Get<int>(SettingKeys.Windowed) == 1; bool windowed = GameSettings.Get<int>(SettingKeys.Windowed) == 1;
if (windowed) if (windowed)
{ {