Collection
Key Features
Manages Player Collectors: Provides a list of available collectors, interface for searching nearby resource nodes or resource depots.
World Space Resource: Define resource nodes that produce valuable resources to players, frequent or scarce.
Depot Usage: Utilise resource depots to manage and store collected resources.
Flexible Collecting Types: Choose from various collection behaviours to fit your game design.
Event-Driven Updates: Triggers events for UI or gameplay reactions.
Structure
Collection Module - Easy access to available collectors, finding nearby nodes or depots.
Resource Collector Capability - Defines collectors capabilities like supported resources, collect interval, amount and collect type.
Collect Types:
RealtimeCollect - Collects resources directly into the player's resource pool without requiring transport or capacity management.
StackAndCollect - Collects resources into the collector's storage until capacity is reached, then automatically adds them to the player's resource pool without requiring transport.
GatherAndDeposit - Collects resources into the collector's storage and requires transporting them to a resource depot for depositing.
Resource Collector - Management of the collector's state and interactions.
Resource Depot Capability - Defines depot capabilities, specifies supported resources for depositing.
Resource Depot - Management of the depot's state and interactions. Can be moved on static or moving units.
Resource Node Capability - Defines the resource and amount that can be collected from the node.
Resource Node - Management of the node's state and interactions. When capability's amount is zero or negative, node is considered to have unlimited resource.
Collection Events - Global events for tracking collector, node states.
Usage Examples
Control Collectors
When you want to send collector to gather resources from a nearby node.
ResourceCollector collector = // Get collector reference
ResourceSO resource = // Get desired resource that collector supports.
// There are other ways to get collection module, but this is one way
// if you have only Unit reference.
if (collector.Owner.TryGetModule(out CollectionModule collectionModule) &&
collectionModule.FindNearbyNode(collector.Position, resource, out IResourceNode node))
{
collector.GoCollectResource(node);
}
When you want to send collector to deposit resources to a nearby depot.
if (collectionModule.FindNearestDepot(collector.Position, resourceToDeposit, out IResourceDepot depot))
{
collector.GoDepositResource(depot)
}
Display Available Collectors
To show available collectors to player on UI, you can use module's interface.
// Get all idle collectors, with no active tasks.
IResourceCollector[] collectors = collectionModule.GetAvailableCollectors();
Deposit Resource Immediately
To deposit resources held by the collector directly to player with no deposit process.
collector.DepositResource()
Clearing Resource
To remove held resource by the collector.
collector.ClearResource()
Last updated