aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-simulation/economy/Good.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/openvic-simulation/economy/Good.cpp')
-rw-r--r--src/openvic-simulation/economy/Good.cpp25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/openvic-simulation/economy/Good.cpp b/src/openvic-simulation/economy/Good.cpp
index b068644..2aa5d42 100644
--- a/src/openvic-simulation/economy/Good.cpp
+++ b/src/openvic-simulation/economy/Good.cpp
@@ -8,9 +8,9 @@ using namespace OpenVic::NodeTools;
GoodCategory::GoodCategory(std::string_view new_identifier) : HasIdentifier { new_identifier } {}
Good::Good(
- std::string_view new_identifier, colour_t new_colour, GoodCategory const& new_category, price_t new_base_price,
- bool new_available_from_start, bool new_tradeable, bool new_money, bool new_overseas_penalty
-) : HasIdentifierAndColour { new_identifier, new_colour, false, false }, category { new_category },
+ std::string_view new_identifier, colour_t new_colour, index_t new_index, GoodCategory const& new_category,
+ price_t new_base_price, bool new_available_from_start, bool new_tradeable, bool new_money, bool new_overseas_penalty
+) : HasIdentifierAndColour { new_identifier, new_colour, false, false }, index { new_index }, category { new_category },
base_price { new_base_price }, available_from_start { new_available_from_start }, tradeable { new_tradeable },
money { new_money }, overseas_penalty { new_overseas_penalty } {
assert(base_price > NULL_PRICE);
@@ -48,7 +48,7 @@ bool GoodManager::add_good(
return false;
}
return goods.add_item({
- identifier, colour, category, base_price, available_from_start,
+ identifier, colour, get_good_count(), category, base_price, available_from_start,
tradeable, money, overseas_penalty
});
}
@@ -95,3 +95,20 @@ bool GoodManager::load_goods_file(ast::NodeCPtr root) {
lock_goods();
return ret;
}
+
+#define GOOD_MODIFIER(name) \
+ modifier_manager.register_complex_modifier(name); \
+ for (Good const& good : this->get_goods()) { \
+ std::string modifier_name = name; \
+ modifier_name += "_"; \
+ modifier_name += good.get_identifier(); \
+ ret &= modifier_manager.add_modifier_effect(modifier_name, true, ModifierEffect::format_t::PROPORTION_DECIMAL); \
+ }
+
+bool GoodManager::generate_modifiers(ModifierManager& modifier_manager) {
+ bool ret = true;
+ GOOD_MODIFIER("factory_goods_output");
+ GOOD_MODIFIER("rgo_goods_output");
+ GOOD_MODIFIER("rgo_size");
+ return ret;
+} \ No newline at end of file