namespace DanieleMarotta.RiversongCodeShowcase { public class Building : Entity, IBuildingShape, IProductStorageEntity, IAgentSourceEntity { private ProductStorage _storage; private ProductStoragePolicyState _productStoragePolicy; private BuildingProductionState _productionState; private AgentSourceState _agentsState; private PopulationNeedsState _needsState; private BuildingSleepState _sleepState; public BuildingDefinition Definition { get; set; } public TileRect Rect { get; set; } public Directions Orientation { get; set; } public int WeekCreated { get; set; } public int TierIndex { get; set; } public int PopulationCapacity { get; set; } public float SpawnCooldown => Definition.SpawnCooldown; public ref ProductStorage GetStorageRW() { return ref _storage; } public ref ProductStoragePolicyState GetProductStoragePolicyRW() { return ref _productStoragePolicy; } public ref BuildingProductionState GetProductionStateRW() { return ref _productionState; } public ref AgentSourceState GetAgentSourceStateRW() { return ref _agentsState; } public ref PopulationNeedsState GetNeedsStateRW() { return ref _needsState; } public ref BuildingSleepState GetSleepStateRW() { return ref _sleepState; } } }