public ItemMod[] GetExactMods() { if (SelectedAffix != null) { float[] values = sliders.Select(s => (float)s.Value).ToArray(); if (SelectedAffix.Name.Contains(" per second")) { values = values.Select(v => v * 60f).ToArray(); } var aff = SelectedAffix.Query(values).FirstOrDefault(); if (aff.ParentAffix.IsRangeMod) { return(new[] { aff.Stats[0].ToItemMod(sliders.Select(s => (float)s.Value).ToArray()) }); } var fvalues = aff.Stats.Select((s, i) => s.ToItemMod((float)sliders[i].Value)); return(fvalues.ToArray()); } return(new ItemMod[0]); }
public IEnumerable <ItemMod> GetExactMods() { if (SelectedAffix != null) { float[] values = _sliders.Select(s => (float)s.Value).ToArray(); var aff = SelectedAffix.Query(values).First(); if (aff.IsRangeMod) { return(new[] { aff.RangeCombinedStat.ToItemMod(false, _sliders.Select(s => (float)s.Value).ToArray()) }); } return(aff.Stats.Select((s, i) => s.ToItemMod(false, (float)_sliders[i].Value))); } return(new ItemMod[0]); }
private void slValue_ValueChanged(object sender, RoutedPropertyChangedEventArgs <double> e) { if (_updatingSliders || _changingaffix) { return; } var aff = cbAffix.SelectedItem as Affix; if (aff == null) { return; } int indx = (int)((OverlayedSlider)sender).Tag; var tiers = aff.QueryMod(indx, (float)e.NewValue).OrderBy(m => m.Name).ToArray(); _updatingSliders = true; for (int i = 0; i < _sliders.Count; i++) { if (i != indx) { if (!aff.QueryMod(i, (float)_sliders[i].Value).Intersect(tiers).Any()) { //slider isnt inside current tier var moveto = tiers[0].Stats[i].Range; _sliders[i].Value = (e.NewValue > e.OldValue) ? moveto.From : moveto.To; } } } _updatingSliders = false; OnPropertyChanged("SelectedValues"); if (SelectedValuesChanged != null) { SelectedValuesChanged(this, SelectedValues); } tbtlabel.Text = TiersString(SelectedAffix.Query(_sliders.Select(s => (float)s.Value).ToArray())); }
public IEnumerable <ItemModTier> Query() { return(SelectedAffix.Query(SelectedValues)); }