diff options
author | Hop311 <Hop3114@gmail.com> | 2023-12-02 20:42:06 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-02 20:42:06 +0100 |
commit | 444a27726695478e44e0166e75df1f354b6432d5 (patch) | |
tree | f1f6276c91beceecdfd9b09083d1c91ea8b41b60 /src/openvic-simulation/economy | |
parent | cd6875d5e0ca5e2545fd0e1647678cd18a6c81c2 (diff) | |
parent | 4a899c1a9e83ab9476b85522751081be434caa35 (diff) |
Merge pull request #82 from OpenVicProject/backlog
Accumulated changes from Dev Diary GUI focus period
Diffstat (limited to 'src/openvic-simulation/economy')
-rw-r--r-- | src/openvic-simulation/economy/Good.cpp | 9 | ||||
-rw-r--r-- | src/openvic-simulation/economy/Good.hpp | 8 | ||||
-rw-r--r-- | src/openvic-simulation/economy/ProductionType.cpp | 9 | ||||
-rw-r--r-- | src/openvic-simulation/economy/ProductionType.hpp | 1 |
4 files changed, 18 insertions, 9 deletions
diff --git a/src/openvic-simulation/economy/Good.cpp b/src/openvic-simulation/economy/Good.cpp index 739374b..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 }); } @@ -105,7 +105,6 @@ bool GoodManager::load_goods_file(ast::NodeCPtr root) { 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"); diff --git a/src/openvic-simulation/economy/Good.hpp b/src/openvic-simulation/economy/Good.hpp index 8a239d5..1537514 100644 --- a/src/openvic-simulation/economy/Good.hpp +++ b/src/openvic-simulation/economy/Good.hpp @@ -31,12 +31,15 @@ namespace OpenVic { struct Good : HasIdentifierAndColour { friend struct GoodManager; + using index_t = size_t; + using price_t = fixed_point_t; static constexpr price_t NULL_PRICE = fixed_point_t::_0(); using good_map_t = fixed_point_map_t<Good const*>; private: + const index_t PROPERTY(index); GoodCategory const& PROPERTY(category); const price_t PROPERTY(base_price); const bool PROPERTY_CUSTOM_PREFIX(available_from_start, is); @@ -48,8 +51,9 @@ namespace OpenVic { bool PROPERTY_RW(available); 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 + 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 ); public: diff --git a/src/openvic-simulation/economy/ProductionType.cpp b/src/openvic-simulation/economy/ProductionType.cpp index 6bd3858..a862b12 100644 --- a/src/openvic-simulation/economy/ProductionType.cpp +++ b/src/openvic-simulation/economy/ProductionType.cpp @@ -14,7 +14,7 @@ ProductionType::ProductionType( input_goods { std::move(input_goods) }, output_goods { output_goods }, value { value }, bonuses { std::move(bonuses) }, efficiency { std::move(efficiency) }, coastal { coastal }, farm { farm }, mine { mine } {} -ProductionTypeManager::ProductionTypeManager() : production_types { "production types" } {} +ProductionTypeManager::ProductionTypeManager() : production_types { "production types" }, rgo_owner_sprite { 0 } {} node_callback_t ProductionTypeManager::_expect_employed_pop( GoodManager const& good_manager, PopManager const& pop_manager, callback_t<EmployedPop&&> cb @@ -102,10 +102,15 @@ bool ProductionTypeManager::add_production_type(PRODUCTION_TYPE_ARGS) { return false; } - return production_types.add_item({ + const bool ret = production_types.add_item({ identifier, owner, employees, type, workforce, std::move(input_goods), output_goods, value, std::move(bonuses), std::move(efficiency), coastal, farm, mine }); + if (rgo_owner_sprite <= 0 && ret && type == ProductionType::type_t::RGO && owner.get_pop_type() != nullptr) { + /* Set rgo owner sprite to that of the first RGO owner we find. */ + rgo_owner_sprite = owner.get_pop_type()->get_sprite(); + } + return ret; } #define PARSE_NODE \ diff --git a/src/openvic-simulation/economy/ProductionType.hpp b/src/openvic-simulation/economy/ProductionType.hpp index dd0b2fd..bce3698 100644 --- a/src/openvic-simulation/economy/ProductionType.hpp +++ b/src/openvic-simulation/economy/ProductionType.hpp @@ -67,6 +67,7 @@ namespace OpenVic { struct ProductionTypeManager { private: IdentifierRegistry<ProductionType> production_types; + PopType::sprite_t PROPERTY(rgo_owner_sprite); NodeTools::node_callback_t _expect_employed_pop( GoodManager const& good_manager, PopManager const& pop_manager, NodeTools::callback_t<EmployedPop&&> cb |