#pragma once #include "openvic-simulation/economy/production/ProductionType.hpp" #include "openvic-simulation/economy/trading/MarketInstance.hpp" #include "openvic-simulation/modifier/ModifierEffectCache.hpp" #include "openvic-simulation/pop/Pop.hpp" #include "openvic-simulation/types/fixed_point/FixedPoint.hpp" #include "openvic-simulation/utility/Getters.hpp" namespace OpenVic { struct ArtisanalProducer { private: MarketInstance& market_instance; ModifierEffectCache const& modifier_effect_cache; Pop& pop; Pop::pop_size_t previous_pop_size; fixed_point_t inputs_bought_scalar; ProductionType const& PROPERTY(production_type); fixed_point_t PROPERTY(current_production); public: ArtisanalProducer( MarketInstance& new_market_instance, ModifierEffectCache const& new_modifier_effect_cache, Pop& new_pop, Pop::pop_size_t new_previous_pop_size, fixed_point_t new_inputs_bought_scalar, ProductionType const& new_production_type, fixed_point_t new_current_production ); void artisan_tick(); }; }