From 1c0505e4b5952c9480fb802b3e2d2bfa9ddb4951 Mon Sep 17 00:00:00 2001 From: wvpm <24685035+wvpm@users.noreply.github.com> Date: Tue, 9 Jan 2024 23:11:16 +0100 Subject: Added producer types --- src/openvic-simulation/economy/FactoryProducer.hpp | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/openvic-simulation/economy/FactoryProducer.hpp (limited to 'src/openvic-simulation/economy/FactoryProducer.hpp') diff --git a/src/openvic-simulation/economy/FactoryProducer.hpp b/src/openvic-simulation/economy/FactoryProducer.hpp new file mode 100644 index 0000000..623ec48 --- /dev/null +++ b/src/openvic-simulation/economy/FactoryProducer.hpp @@ -0,0 +1,51 @@ +#pragma once + +#include + +#include "openvic-simulation/economy/Good.hpp" +#include "openvic-simulation/economy/ProductionType.hpp" +#include "openvic-simulation/types/fixed_point/FixedPoint.hpp" +#include "openvic-simulation/utility/Getters.hpp" + +namespace OpenVic { + class FactoryProducer final { + private: + static constexpr uint8_t DAYS_OF_HISTORY = 7; + using daily_profit_history_t = std::array; + + uint8_t PROPERTY(profit_history_current); + daily_profit_history_t PROPERTY(daily_profit_history); + ProductionType const& PROPERTY(production_type); + fixed_point_t PROPERTY(revenue_yesterday); + fixed_point_t PROPERTY(output_quantity_yesterday); + fixed_point_t PROPERTY(unsold_quantity_yesterday); + fixed_point_t PROPERTY(size_multiplier); + ordered_map PROPERTY(employees); + Good::good_map_t PROPERTY(stockpile); + fixed_point_t PROPERTY(budget); + fixed_point_t PROPERTY(balance_yesterday); + fixed_point_t PROPERTY(received_investments_yesterday); + fixed_point_t PROPERTY(market_spendings_yesterday); + fixed_point_t PROPERTY(paychecks_yesterday); + uint32_t PROPERTY(unprofitable_days); + uint32_t PROPERTY(subsidised_days); + uint32_t PROPERTY(days_without_input); + uint8_t PROPERTY_RW(hiring_priority); + + public: + FactoryProducer( + ProductionType const& new_production_type, const fixed_point_t new_size_multiplier, + const fixed_point_t new_revenue_yesterday, const fixed_point_t new_output_quantity_yesterday, + const fixed_point_t new_unsold_quantity_yesterday, ordered_map&& new_employees, + Good::good_map_t&& new_stockpile, fixed_point_t new_budget, const fixed_point_t new_balance_yesterday, + const fixed_point_t new_received_investments_yesterday, const fixed_point_t new_market_spendings_yesterday, + const fixed_point_t new_paychecks_yesterday, const uint32_t new_unprofitable_days, + const uint32_t new_subsidised_days, const uint32_t new_days_without_input, const uint8_t new_hiring_priority, + const uint8_t new_profit_history_current, daily_profit_history_t&& new_daily_profit_history + ); + FactoryProducer(ProductionType const& new_production_type, const fixed_point_t new_size_multiplier); + + fixed_point_t get_profitability_yesterday() const; + fixed_point_t get_average_profitability_last_seven_days() const; + }; +} -- cgit v1.2.3-56-ga3b1