Class ContractInfoBuilder
Builder for composing ContractInfo at runtime with a fluent API. Provides an easy way to create contracts for NPC customers.
public sealed class ContractInfoBuilder
- Inheritance
-
ContractInfoBuilder
- Inherited Members
- Extension Methods
Constructors
ContractInfoBuilder()
Creates a new ContractInfoBuilder instance.
public ContractInfoBuilder()
Methods
AddProduct(ProductDefinition, int, Quality)
Adds a product to the contract by product definition.
public ContractInfoBuilder AddProduct(ProductDefinition definition, int quantity, Quality minQuality)
Parameters
definitionProductDefinitionThe product definition
quantityintQuantity to order (minimum 1)
minQualityQualityMinimum acceptable quality
Returns
- ContractInfoBuilder
This builder instance for method chaining
AddProducts(IEnumerable<(ProductDefinition definition, int quantity, Quality minQuality)>)
Adds multiple products to the contract.
public ContractInfoBuilder AddProducts(IEnumerable<(ProductDefinition definition, int quantity, Quality minQuality)> products)
Parameters
productsIEnumerable<(ProductDefinition definition, int quantity, Quality minQuality)>Collection of (definition, quantity, minQuality) tuples
Returns
- ContractInfoBuilder
This builder instance for method chaining
AsCounterOffer(bool)
Marks this contract as a counter offer.
public ContractInfoBuilder AsCounterOffer(bool isCounterOffer = true)
Parameters
isCounterOfferboolWhether this is a counter offer
Returns
- ContractInfoBuilder
This builder instance for method chaining
Build()
Builds the final ContractInfo instance.
public ContractInfo Build()
Returns
- ContractInfo
A new ContractInfo instance with the configured settings
Exceptions
- InvalidOperationException
Thrown if no products have been added
ExpiresAfter(int)
Sets the expiration time in minutes.
public ContractInfoBuilder ExpiresAfter(int minutes)
Parameters
minutesintMinutes until expiry (minimum 0)
Returns
- ContractInfoBuilder
This builder instance for method chaining
QuickContract(ProductDefinition, int, float, Quality)
Creates a quick contract with a single product.
public static ContractInfo QuickContract(ProductDefinition definition, int quantity, float payment, Quality minQuality = Quality.Standard)
Parameters
definitionProductDefinitionProduct definition
quantityintQuantity
paymentfloatPayment amount
minQualityQualityMinimum quality (defaults to Standard)
Returns
- ContractInfo
A new ContractInfo instance
WithDeliveryLocation(DeliveryLocation)
Sets the delivery location using a DeliveryLocation wrapper.
public ContractInfoBuilder WithDeliveryLocation(DeliveryLocation location)
Parameters
locationDeliveryLocationThe delivery location
Returns
- ContractInfoBuilder
This builder instance for method chaining
WithDeliveryLocationByGuid(string)
Sets the delivery location by GUID using DeliveryLocations.GetByGuid().
public ContractInfoBuilder WithDeliveryLocationByGuid(string locationGuid)
Parameters
locationGuidstringThe delivery location GUID
Returns
- ContractInfoBuilder
This builder instance for method chaining
WithDeliveryLocationByName(string)
Sets the delivery location by name using DeliveryLocations.GetByName().
public ContractInfoBuilder WithDeliveryLocationByName(string locationName)
Parameters
locationNamestringThe delivery location name
Returns
- ContractInfoBuilder
This builder instance for method chaining
WithDeliveryWindow(int, int)
Sets the delivery window in 24h hhmm format.
public ContractInfoBuilder WithDeliveryWindow(int startTime, int endTime)
Parameters
Returns
- ContractInfoBuilder
This builder instance for method chaining
WithDeliveryWindow(TimeSpan, TimeSpan)
Sets the delivery window using TimeSpan for convenience.
public ContractInfoBuilder WithDeliveryWindow(TimeSpan startTime, TimeSpan endTime)
Parameters
Returns
- ContractInfoBuilder
This builder instance for method chaining
WithExpiration(bool)
Sets whether the contract expires automatically.
public ContractInfoBuilder WithExpiration(bool expires)
Parameters
expiresboolWhether the contract expires
Returns
- ContractInfoBuilder
This builder instance for method chaining
WithPayment(float)
Sets the contract payment amount.
public ContractInfoBuilder WithPayment(float payment)
Parameters
paymentfloatThe payment amount (must be >= 0)
Returns
- ContractInfoBuilder
This builder instance for method chaining
WithPickupScheduleIndex(int)
Sets the pickup schedule index.
public ContractInfoBuilder WithPickupScheduleIndex(int index)
Parameters
indexintPickup schedule index (minimum 0)
Returns
- ContractInfoBuilder
This builder instance for method chaining
WithoutDeliveryWindow()
Removes the delivery window constraint.
public ContractInfoBuilder WithoutDeliveryWindow()
Returns
- ContractInfoBuilder
This builder instance for method chaining