Table of Contents

Class ContractInfoBuilder

Namespace
S1API.Economy
Assembly
S1API.dll

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

definition ProductDefinition

The product definition

quantity int

Quantity to order (minimum 1)

minQuality Quality

Minimum 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

products IEnumerable<(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

isCounterOffer bool

Whether 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

minutes int

Minutes 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

definition ProductDefinition

Product definition

quantity int

Quantity

payment float

Payment amount

minQuality Quality

Minimum 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

location DeliveryLocation

The 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

locationGuid string

The 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

locationName string

The 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

startTime int

Start time (e.g., 900 for 9:00 AM)

endTime int

End time (e.g., 1700 for 5:00 PM)

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

startTime TimeSpan

Start time

endTime TimeSpan

End time

Returns

ContractInfoBuilder

This builder instance for method chaining

WithExpiration(bool)

Sets whether the contract expires automatically.

public ContractInfoBuilder WithExpiration(bool expires)

Parameters

expires bool

Whether the contract expires

Returns

ContractInfoBuilder

This builder instance for method chaining

WithPayment(float)

Sets the contract payment amount.

public ContractInfoBuilder WithPayment(float payment)

Parameters

payment float

The 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

index int

Pickup 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