private void SliderOnValueChanged(object sender, SliderValueChangedEventArgs e) { if (_updatingSliders) { return; } var slider = (SliderViewModel)sender; IMod[] tiers = SelectedAffix.QueryModsSingleValue(slider.ValueIndex, e.NewValue) .OrderBy(m => m.RequiredLevel).ToArray(); _updatingSliders = true; foreach (var other in _sliders.Where(s => s != slider)) { var iValue = other.ValueIndex; if (!SelectedAffix.QueryModsSingleValue(iValue, other.Value).Intersect(tiers).Any()) { // slider isn't inside current tier Range <int> moveto = tiers[0].Stats[iValue].Range; other.Value = (e.NewValue > e.OldValue) ? moveto.From : moveto.To; } } _updatingSliders = false; OnPropertyChanged("SelectedValues"); AffixText = string.Join("/", SelectedAffix.QueryMods(SelectedValues).Select(s => $"{s.Name}").Distinct()); }
private void SliderOnValueChanged(object sender, SliderValueChangedEventArgs e) { if (_updatingSliders) { return; } var slider = (SliderViewModel)sender; ItemModTier[] tiers = SelectedAffix.QueryMod(slider.StatIndex, slider.ValueIndex, e.NewValue) .OrderBy(m => m.Name).ToArray(); _updatingSliders = true; foreach (var other in _sliders.Where(s => s != slider)) { var iStat = other.StatIndex; var iValue = other.ValueIndex; if (!SelectedAffix.QueryMod(iStat, iValue, other.Value).Intersect(tiers).Any()) { // slider isn't inside current tier Range <float> moveto = tiers[0].Stats[iStat].Ranges[iValue]; other.Value = (e.NewValue > e.OldValue) ? moveto.From : moveto.To; } } _updatingSliders = false; OnPropertyChanged("SelectedValues"); AffixText = TiersString(Query()); }
private void QualitySliderOnValueChanged(object sender, SliderValueChangedEventArgs e) { RecalculateItem(); }