private void OptimizeButton_Click(object sender, RoutedEventArgs e) { bool overrideRegem = OverrideRegemCheck.IsChecked.GetValueOrDefault(); bool overrideReenchant = OverrideReenchantCheck.IsChecked.GetValueOrDefault(); int thoroughness = (int)ThoroughnessSlider.Value; string calculationToOptimize = GetCalculationStringFromComboBox(CalculationToOptimizeCombo, null); bool costRequirement; List <OptimizationRequirement> requirements = GetOptimizationRequirements(out costRequirement); optimizer.OptimizationMethod = OptimizerSettings.Default.OptimizationMethod; optimizer.GreedyOptimizationMethod = OptimizerSettings.Default.GreedyOptimizationMethod; optimizer.InitializeItemCache(character, character.AvailableItems, overrideRegem, overrideReenchant, OptimizerSettings.Default.TemplateGemsEnabled, Calculations.Instance, FoodCheck.IsChecked.GetValueOrDefault(), ElixirsFlasksCheck.IsChecked.GetValueOrDefault(), MixologyCheck.IsChecked.GetValueOrDefault(), GetOptimizeTalentSpecs(), TalentsCheck.IsChecked.GetValueOrDefault(), costRequirement); if (OptimizerSettings.Default.WarningsEnabled) { string prompt = optimizer.GetWarningPromptIfNeeded(); if (prompt != null) { if (MessageBox.Show(prompt, "Optimizer Warning", MessageBoxButton.OKCancel) != MessageBoxResult.OK) { ControlsEnabled(true); return; } } prompt = optimizer.CheckOneHandedWeaponUniqueness(); if (prompt != null) { if (MessageBox.Show(prompt, "Optimizer Warning", MessageBoxButton.OKCancel) != MessageBoxResult.OK) { ControlsEnabled(true); return; } } if (!optimizer.ItemGenerator.IsCharacterValid(character, out prompt, true)) { if (MessageBox.Show(prompt, "Optimizer Warning", MessageBoxButton.OKCancel) != MessageBoxResult.OK) { ControlsEnabled(true); return; } } } CancelButton.Visibility = Visibility.Visible; DoneButton.Visibility = Visibility.Collapsed; ControlsEnabled(false); optimizer.OptimizeCharacterAsync(character, calculationToOptimize, requirements, thoroughness, false); }
private void OptimizeButton_Click(object sender, RoutedEventArgs e) { bool overrideRegem = CK_Override_Regem.IsChecked.GetValueOrDefault(); bool overrideReenchant = CK_Override_Reenchant.IsChecked.GetValueOrDefault(); bool overrideReforge = CK_Override_Reforge.IsChecked.GetValueOrDefault(); int thoroughness = (int)ThoroughnessSlider.Value; if (Keyboard.Modifiers.HasFlag(ModifierKeys.Control)) { thoroughness *= 10; //Allow super high thoroughness using Ctrl-Click on Optimize } string calculationToOptimize = GetCalculationStringFromComboBox(CalculationToOptimizeCombo, null); bool costRequirement; List <OptimizationRequirement> requirements = GetOptimizationRequirements(out costRequirement); optimizer.OptimizationMethod = OptimizerSettings.Default.OptimizationMethod; optimizer.GreedyOptimizationMethod = OptimizerSettings.Default.GreedyOptimizationMethod; CREATE_ITEM_GENERATOR: optimizer.InitializeItemCache(character, character.AvailableItems, overrideRegem, overrideReenchant, overrideReforge, OptimizerSettings.Default.TemplateGemsEnabled, Calculations.Instance, CK_Food.IsChecked.GetValueOrDefault(), CK_ElixirsFlasks.IsChecked.GetValueOrDefault(), CK_Mixology.IsChecked.GetValueOrDefault(), GetOptimizeTalentSpecs(), CK_Talents_Specs.IsChecked.GetValueOrDefault(), CK_Talents_Glyphs.IsChecked.GetValueOrDefault(), costRequirement); if (OptimizerSettings.Default.WarningsEnabled) { string prompt; if (!optimizer.ItemGenerator.IsCharacterValid(character, out prompt, true)) { #if SILVERLIGHT switch (MessageBox.Show(prompt, "Optimizer Warning", MessageBoxButton.OKCancel)) #else switch (MessageBox.Show(prompt, "Optimizer Warning", MessageBoxButton.YesNoCancel)) #endif { case MessageBoxResult.Yes: // fix errors and recreate item generator optimizer.ItemGenerator.MakeCharacterValid(character); goto CREATE_ITEM_GENERATOR; case MessageBoxResult.OK: case MessageBoxResult.No: // pass through break; case MessageBoxResult.Cancel: ControlsEnabled(true); return; } } prompt = optimizer.GetWarningPromptIfNeeded(); if (prompt != null) { if (MessageBox.Show(prompt, "Optimizer Warning", MessageBoxButton.OKCancel) != MessageBoxResult.OK) { ControlsEnabled(true); return; } } prompt = optimizer.CheckOneHandedWeaponUniqueness(); if (prompt != null) { if (MessageBox.Show(prompt, "Optimizer Warning", MessageBoxButton.OKCancel) != MessageBoxResult.OK) { ControlsEnabled(true); return; } } } CancelButton.Visibility = Visibility.Visible; DoneButton.Visibility = Visibility.Collapsed; lastOperation = Operation.Optimize; ControlsEnabled(false); // store the optimization parameters, used by optimizer results to display the relevant calculation score character.CalculationToOptimize = calculationToOptimize; character.OptimizationRequirements = requirements; optimizer.OptimizeCharacterAsync(character, calculationToOptimize, requirements, thoroughness, false); }
private void buttonOptimize_Click(object sender, EventArgs e) { bool _overrideRegem = checkBoxOverrideRegem.Checked; bool _overrideReenchant = checkBoxOverrideReenchant.Checked; int _thoroughness = trackBarThoroughness.Value; string _calculationToOptimize = GetCalculationStringFromComboBox(comboBoxCalculationToOptimize, null); List <OptimizationRequirement> requirements = new List <OptimizationRequirement>(); bool costRequirement = false; foreach (Control ctrl in groupBoxRequirements.Controls) { ctrl.Enabled = false; Panel panel = ctrl as Panel; if (panel != null) { OptimizationRequirement requirement = new OptimizationRequirement(); requirement.Calculation = GetCalculationStringFromComboBox(panel.Controls["comboBoxRequirementCalculation"] as ComboBox, panel.Controls["comboBoxRequirementTalent"] as ComboBox); requirement.LessThan = (panel.Controls["comboBoxRequirementGreaterLessThan"] as ComboBox).SelectedIndex == 1; requirement.Value = (float)((panel.Controls["numericUpDownRequirementValue"] as NumericUpDown).Value); requirements.Add(requirement); if (requirement.Calculation == "[Cost]") { costRequirement = true; } } } _optimizer.OptimizationMethod = Properties.Optimizer.Default.OptimizationMethod; _optimizer.GreedyOptimizationMethod = Properties.Optimizer.Default.GreedyOptimizationMethod; _optimizer.InitializeItemCache(_character, _character.AvailableItems, _overrideRegem, _overrideReenchant, Properties.Optimizer.Default.TemplateGemsEnabled, Calculations.Instance, checkBoxOptimizeFood.Checked, checkBoxOptimizeElixir.Checked, checkBoxMixology.Checked, GetOptimizeTalentSpecs(), checkBoxMutateTalents.Checked, costRequirement); if (Properties.Optimizer.Default.WarningsEnabled) { string prompt = _optimizer.GetWarningPromptIfNeeded(); if (prompt != null) { if (MessageBox.Show(prompt, "Optimizer Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes) { EnableAllReqs(); return; } } prompt = _optimizer.CheckOneHandedWeaponUniqueness(); if (prompt != null) { if (MessageBox.Show(prompt, "Optimizer Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes) { EnableAllReqs(); return; } } if (!_optimizer.ItemGenerator.IsCharacterValid(_character, out prompt, true)) { if (MessageBox.Show(prompt, "Optimizer Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes) { EnableAllReqs(); return; } } } buttonOptimize.Text = "Optimizing..."; buttonCancel.Text = "Cancel"; buttonOptimize.Enabled = buttonUpgrades.Enabled = checkBoxOverrideRegem.Enabled = checkBoxOverrideReenchant.Enabled = trackBarThoroughness.Enabled = checkBoxMixology.Enabled = checkBoxOptimizeElixir.Enabled = checkBoxOptimizeFood.Enabled = checkBoxOptimizeTalents.Enabled = checkBoxMutateTalents.Enabled = comboBoxCalculationToOptimize.Enabled = false; buttonCancel.DialogResult = DialogResult.None; _optimizer.OptimizeCharacterAsync(_character, _calculationToOptimize, requirements, _thoroughness, false); }