aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-simulation/economy/FactoryProducer.hpp
diff options
context:
space:
mode:
author wvpm <24685035+wvpm@users.noreply.github.com>2024-01-09 23:11:16 +0100
committer wvpm <24685035+wvpm@users.noreply.github.com>2024-02-05 09:29:47 +0100
commit1c0505e4b5952c9480fb802b3e2d2bfa9ddb4951 (patch)
tree66afe2e4e9017a6267199ec4a91790a8a6f9dc73 /src/openvic-simulation/economy/FactoryProducer.hpp
parent068c13ede817d17df599ca3481261bf17ed95604 (diff)
Added producer typesproducer_types
Diffstat (limited to 'src/openvic-simulation/economy/FactoryProducer.hpp')
-rw-r--r--src/openvic-simulation/economy/FactoryProducer.hpp51
1 files changed, 51 insertions, 0 deletions
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 <cstdint>
+
+#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<fixed_point_t, DAYS_OF_HISTORY>;
+
+ 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<Pop*, Pop::pop_size_t> 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<Pop*, Pop::pop_size_t>&& 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;
+ };
+}