aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-simulation/economy/production/FactoryProducer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/openvic-simulation/economy/production/FactoryProducer.cpp')
-rw-r--r--src/openvic-simulation/economy/production/FactoryProducer.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/openvic-simulation/economy/production/FactoryProducer.cpp b/src/openvic-simulation/economy/production/FactoryProducer.cpp
new file mode 100644
index 0000000..2ef9fa8
--- /dev/null
+++ b/src/openvic-simulation/economy/production/FactoryProducer.cpp
@@ -0,0 +1,58 @@
+#include "FactoryProducer.hpp"
+
+using namespace OpenVic;
+
+FactoryProducer::FactoryProducer(
+ ProductionType const& new_production_type,
+ fixed_point_t new_size_multiplier,
+ fixed_point_t new_revenue_yesterday,
+ fixed_point_t new_output_quantity_yesterday,
+ fixed_point_t new_unsold_quantity_yesterday,
+ ordered_map<Pop*, Pop::pop_size_t>&& new_employees,
+ GoodDefinition::good_definition_map_t&& new_stockpile,
+ fixed_point_t new_budget,
+ fixed_point_t new_balance_yesterday,
+ fixed_point_t new_received_investments_yesterday,
+ fixed_point_t new_market_spendings_yesterday,
+ fixed_point_t new_paychecks_yesterday,
+ uint32_t new_unprofitable_days,
+ uint32_t new_subsidised_days,
+ uint32_t new_days_without_input,
+ uint8_t new_hiring_priority,
+ uint8_t new_profit_history_current,
+ daily_profit_history_t&& new_daily_profit_history
+) : production_type { new_production_type },
+ size_multiplier { new_size_multiplier },
+ revenue_yesterday { new_revenue_yesterday },
+ output_quantity_yesterday { new_output_quantity_yesterday },
+ unsold_quantity_yesterday { new_unsold_quantity_yesterday },
+ employees { std::move(new_employees) },
+ stockpile { std::move(new_stockpile) },
+ budget { new_budget },
+ balance_yesterday { new_balance_yesterday },
+ received_investments_yesterday { new_received_investments_yesterday },
+ market_spendings_yesterday { new_market_spendings_yesterday },
+ paychecks_yesterday { new_paychecks_yesterday },
+ unprofitable_days { new_unprofitable_days },
+ subsidised_days { new_subsidised_days },
+ days_without_input { new_days_without_input },
+ hiring_priority { new_hiring_priority },
+ profit_history_current { new_profit_history_current },
+ daily_profit_history { std::move(new_daily_profit_history) } {}
+
+FactoryProducer::FactoryProducer(ProductionType const& new_production_type, fixed_point_t new_size_multiplier)
+ : FactoryProducer { new_production_type, new_size_multiplier, 0, 0, 0, {}, {}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {} } {}
+
+fixed_point_t FactoryProducer::get_profitability_yesterday() const {
+ return daily_profit_history[profit_history_current];
+}
+
+fixed_point_t FactoryProducer::get_average_profitability_last_seven_days() const {
+ fixed_point_t sum = 0;
+
+ for (int i = 0; i <= profit_history_current; i++) {
+ sum += daily_profit_history[i];
+ }
+
+ return sum / (1 + profit_history_current);
+}