public NodeValue?Calculate(IValueCalculationContext valueCalculationContext) { var paths = from source in _path.ModifierSource.InfluencingSources let path = new PathDefinition(source) from stat in _stat.Concat(_path.ConversionStats) select(stat, path); return(_aggregator(valueCalculationContext.GetValues(_form, paths))); }
private IEnumerable <PathDefinition> GetPaths(IValueCalculationContext context, IStat stat) { if (!_target.Equals(stat)) { return(context.GetPaths(stat)); } var originalPaths = context.GetPaths(_target); var conversionPaths = context.GetPaths(_source) .Select(p => new PathDefinition(p.ModifierSource, _source.Concat(p.ConversionStats).ToList())); return(originalPaths.Concat(conversionPaths).Distinct()); }
public IEnumerable <PathDefinition> GetPaths(IStat stat) { if (!_foo.Equals(stat)) { return(_originalContext.GetPaths(stat)); } var originalPaths = _originalContext.GetPaths(_foo); var conversionPaths = _originalContext.GetPaths(_bar) .Select(p => new PathDefinition(p.ModifierSource, _bar.Concat(p.ConversionStats).ToList())); return(originalPaths.Concat(conversionPaths).Distinct()); }