示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }