Loading...
Searching...
No Matches
CityBuilderCore.VariantProductionComponent Class Reference

Detailed Description

building component that periodically consumes and produces items
production time is only started once the consumption items are all there
does not take care of item logistics

https://citybuilder.softleitner.com/manual/resources

Inheritance diagram for CityBuilderCore.VariantProductionComponent:
CityBuilderCore.BuildingComponent CityBuilderCore.IProductionComponent CityBuilderCore.IProgressComponent CityBuilderCore.IBuildingComponent CityBuilderCore.IProgressComponent CityBuilderCore.IItemReceiver CityBuilderCore.IItemOwner CityBuilderCore.IBuildingComponent CityBuilderCore.ISaveData CityBuilderCore.IBuildingComponent CityBuilderCore.IBuildingTrait< IItemReceiver > CityBuilderCore.IItemOwner CityBuilderCore.ISaveData CityBuilderCore.ISaveData CityBuilderCore.VariantProductionWalkerComponent

Classes

class  Variant
 
class  VariantProductionData
 

Public Types

enum  ProductionState { Idle = 0 , Working = 10 , Done = 20 }
 

Public Member Functions

override void InitializeComponent ()
 initialization is performed when the building is placed or loaded
use to create references, register traits, ...
 
override void OnReplacing (IBuilding replacement)
 called when a component gets replaced
use to transfer resources, replace references
 
override void TerminateComponent ()
 termination is performed when the building is destroyed
use to deregister traits, remove references from other systems
 
override string GetDebugText ()
 returns text that gets displayed for debugging in the scene editor
 
IEnumerable< ItemGetItemsIn ()
 
IEnumerable< ItemGetItemsOut ()
 
IEnumerable< ItemGetReceiveItems ()
 returns the kinds of items the receiver needs
 
int GetReceiveCapacity (Item item)
 how much of the item the receiver can still fit
 
void ReserveCapacity (Item item, int amount)
 reserves a capacity in the receiver so it is not filled up by someone else
 
void UnreserveCapacity (Item item, int amount)
 releases capacity that was earlier reserved by ReserveCapacity(Item, int)
call before actually moving items into the receiver or if the delivery was somehow interrupted
 
int Receive (ItemStorage storage, Item item, int quantity)
 requests that a quantity of items is moved from the storage to the receiver
if the full amount does not fit the remaining quantity is returned
 
IEnumerable< ItemLevelGetNeededItems ()
 exposes the items the production component needs to work
 
IEnumerable< ItemLevelGetProducedItems ()
 exposes the items the component can produce
 
override string SaveData ()
 serializes the objects state(usually to json) and returns it
 
override void LoadData (string json)
 deserializes the serialized json data and loads the data as its new state
 
- Public Member Functions inherited from CityBuilderCore.BuildingComponent
virtual void SetupComponent ()
 only called when the building is originally placed, before Initialize
 
virtual void OnMoving ()
 called when the building is about to be moved
can be used to remove/deregister stuff from the old position
 
virtual void OnMoved (Vector2Int oldPoint, BuildingRotation oldRotation)
 called after a building has been moved
can be used to register things at the new position
 
virtual void SuspendComponent ()
 temporarily stops the component from working
 
virtual void ResumeComponent ()
 resumes work in the component after SuspendComponent has been called
 
virtual string GetDescription ()
 gets displayed in dialogs to show the component status to players
 

Public Attributes

ItemStorage Storage
 
Variant[] Variants
 
int VariantIndex = -1
 
BoolEvent HasRawMaterialsChanged
 
BoolEvent HasProductsChanged
 
BoolEvent IsProgressingChanged
 

Protected Member Functions

virtual void Awake ()
 
virtual void Start ()
 
virtual void Update ()
 
virtual void updateProduction ()
 
virtual void setState (ProductionState productionState)
 
virtual bool canWork ()
 
virtual bool canProduce ()
 
virtual void produce ()
 
virtual void onItemsChanged ()
 
bool addProgress (float multiplier)
 
void resetProgress ()
 
void saveData (VariantProductionData data)
 
void loadData (VariantProductionData data)
 
- Protected Member Functions inherited from CityBuilderCore.BuildingComponent
getOther< T > ()
 gets the first building component of the specified type on the same building
 
IEnumerable< T > getOthers< T > ()
 gets all building components of the specified type on the same building
 
BuildingComponentReference< T > registerTrait< T > (T trait)
 registers the building component as a trait so it is globally accessible
usually done in InitializeComponent
 
void replaceTrait< T > (T trait, T replacement)
 replaces the reference a trait points to in the global manager
done when a building is replaced(OnReplacing(IBuilding)) so the trait now points to the new component instead of the one that has been removed
 
void deregisterTrait< T > (T trait)
 removes a previously registered trait
usually when a building is removed which calls TerminateComponent
 

Protected Attributes

bool _isProgressing
 
ProductionState _productionState
 
Variant _productionVariant
 
float _progressTime
 

Properties

override string Key [get]
 unique key used to identify the component in save/load
 
float ProgressInterval [get]
 
float Progress [get]
 progress from 0 to 1
 
int Priority [get]
 can be used so certain receivers are preferred over others
for example construction sites or production may be more important that putting items into storage
 
BuildingComponentReference< IItemReceiverReference [get, set]
 
IItemContainer ItemContainer [get]
 holds and manages the items for the owner
 
virtual bool HasRawMaterials [get]
 
virtual bool HasProducts [get]
 
- Properties inherited from CityBuilderCore.BuildingComponent
string Key [get]
 unique key used to identify the component in save/load
 
IBuilding Building [get, set]
 the building the component is attached to
is set by the building in awake
 
- Properties inherited from CityBuilderCore.IBuildingComponent
- Properties inherited from CityBuilderCore.IProgressComponent
- Properties inherited from CityBuilderCore.IItemReceiver
- Properties inherited from CityBuilderCore.IBuildingTrait< IItemReceiver >
BuildingComponentReference< T > Reference [get, set]
 reference to the building trait, use when the building might be replaced and when the reference has to be saved
 
- Properties inherited from CityBuilderCore.IItemOwner

Events

Action ProgressReset
 
Action< float > ProgressChanged
 
- Events inherited from CityBuilderCore.IProgressComponent
Action ProgressReset
 progress has finished and is reset to 0
 
Action< float > ProgressChanged
 progress has changed, carries new progress
 

Member Function Documentation

◆ GetDebugText()

override string CityBuilderCore.VariantProductionComponent.GetDebugText ( )
inlinevirtual

returns text that gets displayed for debugging in the scene editor

Returns
a debugging string or null

Reimplemented from CityBuilderCore.BuildingComponent.

◆ GetNeededItems()

IEnumerable< ItemLevel > CityBuilderCore.VariantProductionComponent.GetNeededItems ( )

exposes the items the production component needs to work

Returns

Implements CityBuilderCore.IProductionComponent.

◆ GetProducedItems()

IEnumerable< ItemLevel > CityBuilderCore.VariantProductionComponent.GetProducedItems ( )

exposes the items the component can produce

Returns

Implements CityBuilderCore.IProductionComponent.

◆ GetReceiveCapacity()

int CityBuilderCore.VariantProductionComponent.GetReceiveCapacity ( Item item)

how much of the item the receiver can still fit

Parameters
item
Returns
unreserved capacity available

Implements CityBuilderCore.IItemReceiver.

◆ GetReceiveItems()

IEnumerable< Item > CityBuilderCore.VariantProductionComponent.GetReceiveItems ( )
inline

returns the kinds of items the receiver needs

Returns
the pertinent items

Implements CityBuilderCore.IItemReceiver.

◆ InitializeComponent()

override void CityBuilderCore.VariantProductionComponent.InitializeComponent ( )
inlinevirtual

initialization is performed when the building is placed or loaded
use to create references, register traits, ...

Reimplemented from CityBuilderCore.BuildingComponent.

◆ LoadData()

override void CityBuilderCore.VariantProductionComponent.LoadData ( string json)
inlinevirtual

deserializes the serialized json data and loads the data as its new state

Parameters
json

Reimplemented from CityBuilderCore.BuildingComponent.

Reimplemented in CityBuilderCore.VariantProductionWalkerComponent.

◆ OnReplacing()

override void CityBuilderCore.VariantProductionComponent.OnReplacing ( IBuilding replacement)
inlinevirtual

called when a component gets replaced
use to transfer resources, replace references

Parameters
replacement

Reimplemented from CityBuilderCore.BuildingComponent.

◆ Receive()

int CityBuilderCore.VariantProductionComponent.Receive ( ItemStorage storage,
Item item,
int quantity )

requests that a quantity of items is moved from the storage to the receiver
if the full amount does not fit the remaining quantity is returned

Parameters
storagethe storage that items will be taken from
itemthe item to receive
quantitythe maximum quantity of items to receive
Returns
remaining quantity that did not fit

Implements CityBuilderCore.IItemReceiver.

◆ ReserveCapacity()

void CityBuilderCore.VariantProductionComponent.ReserveCapacity ( Item item,
int quantity )

reserves a capacity in the receiver so it is not filled up by someone else

Parameters
itemthe item to be reserved
quantitythe quantity to reserve

Implements CityBuilderCore.IItemReceiver.

◆ SaveData()

override string CityBuilderCore.VariantProductionComponent.SaveData ( )
inlinevirtual

serializes the objects state(usually to json) and returns it

Returns
serialized save data

Reimplemented from CityBuilderCore.BuildingComponent.

Reimplemented in CityBuilderCore.VariantProductionWalkerComponent.

◆ TerminateComponent()

override void CityBuilderCore.VariantProductionComponent.TerminateComponent ( )
inlinevirtual

termination is performed when the building is destroyed
use to deregister traits, remove references from other systems

Reimplemented from CityBuilderCore.BuildingComponent.

◆ UnreserveCapacity()

void CityBuilderCore.VariantProductionComponent.UnreserveCapacity ( Item item,
int quantity )

releases capacity that was earlier reserved by ReserveCapacity(Item, int)
call before actually moving items into the receiver or if the delivery was somehow interrupted

Parameters
itemitem to unreserve
quantityquantity to unreserve

Implements CityBuilderCore.IItemReceiver.

Property Documentation

◆ ItemContainer

IItemContainer CityBuilderCore.VariantProductionComponent.ItemContainer
get

holds and manages the items for the owner

Implements CityBuilderCore.IItemOwner.

◆ Key

override string CityBuilderCore.VariantProductionComponent.Key
get

unique key used to identify the component in save/load

Implements CityBuilderCore.IBuildingComponent.

◆ Priority

int CityBuilderCore.VariantProductionComponent.Priority
get

can be used so certain receivers are preferred over others
for example construction sites or production may be more important that putting items into storage

Implements CityBuilderCore.IItemReceiver.

◆ Progress

float CityBuilderCore.VariantProductionComponent.Progress
get

progress from 0 to 1

Implements CityBuilderCore.IProgressComponent.