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