/********* ** Public methods *********/ /// <summary>Construct an instance.</summary> /// <param name="type">The condition type.</param> /// <param name="values">Get the current values.</param> /// <param name="saveReader">Handles reading info from the current save.</param> /// <param name="mayReturnMultipleValues">Whether the root may contain multiple values.</param> /// <param name="allowedValues">The allowed values (or <c>null</c> if any value is allowed).</param> public PerPlayerValueProvider(ConditionType type, Func <Farmer, IEnumerable <string> > values, TokenSaveReader saveReader, bool mayReturnMultipleValues = false, IEnumerable <string>?allowedValues = null) : base(type, mayReturnMultipleValues) { this.SaveReader = saveReader; this.AllowedRootValues = allowedValues != null?InvariantSets.From(allowedValues) : null; this.FetchValues = player => InvariantSets.From(values(player)); this.EnableInputArguments(required: false, mayReturnMultipleValues: mayReturnMultipleValues, maxPositionalArgs: null); }
/********* ** Public methods *********/ /// <summary>Construct an instance.</summary> /// <param name="saveReader">Handles reading info from the current save.</param> public WeatherValueProvider(TokenSaveReader saveReader) : base(ConditionType.Weather, mayReturnMultipleValuesForRoot: false) { this.SaveReader = saveReader; this.EnableInputArguments(required: false, mayReturnMultipleValues: true, maxPositionalArgs: null); }
/********* ** Public methods *********/ /// <summary>Construct an instance.</summary> /// <param name="saveReader">Handles reading info from the current save.</param> public TimeValueProvider(TokenSaveReader saveReader) : base(ConditionType.Time, mayReturnMultipleValuesForRoot: false) { this.SaveReader = saveReader; this.NormalizeValue = this.NormalizeValueImpl; }
/// <summary>Construct an instance.</summary> /// <param name="type">The condition type.</param> /// <param name="value">Get the current value.</param> /// <param name="saveReader">Handles reading info from the current save.</param> /// <param name="mayReturnMultipleValues">Whether the root may contain multiple values.</param> /// <param name="allowedValues">The allowed values (or <c>null</c> if any value is allowed).</param> public PerPlayerValueProvider(ConditionType type, Func <Farmer, string?> value, TokenSaveReader saveReader, bool mayReturnMultipleValues = false, IEnumerable <string>?allowedValues = null) : this(type, player => BaseValueProvider.WrapOptionalValue(value(player)), saveReader, mayReturnMultipleValues, allowedValues) { }