diff options
author | wvpm <24685035+wvpm@users.noreply.github.com> | 2024-09-22 01:07:51 +0200 |
---|---|---|
committer | wvpm <24685035+wvpm@users.noreply.github.com> | 2024-10-30 22:04:41 +0100 |
commit | 0d861669d9e1f5d487c810ae01be50f142790f1e (patch) | |
tree | 187df50130475006b404c5ab57f0fa679173ad04 /src/openvic-simulation/InstanceManager.cpp | |
parent | 48e4e92682db99239e928a67e6677cdd2c53a375 (diff) |
Implement rgo for new gameprepare_for_rgo
Map province history rgo to production type for province instance
output_goods back to ZERO_OR_ONE
Link trade_goods in history to RGO instance for province.
Other producer types as structs instead of classes
Convert pops to equivalents & calculate rgo size
Also convert pops when changing rgo
Clean up
Refactored RGO into part of ProvinceInstance
ProductionType const& output_good
Remove unused imports
Clean up unused imports
Restore constructor for ResourceGatheringOperation to initialise from savegame
Move rgo size calculation to rgo
Use terrain modifiers to calculate rgo size (placeholder code)
Clean up
Basic production & sales for rgo when initialising new game
Use mutable pops
Paychecks for owners, workers and slaves
Clean up
Simplify rgo instantiation
Co-authored-by: Hop311 <Hop3114@gmail.com>
Simplify good_to_rgo_production_type assignment
Co-authored-by: Hop311 <Hop3114@gmail.com>
Fix import
Co-authored-by: Hop311 <Hop3114@gmail.com>
min(3, great_powers.size())
Co-authored-by: Hop311 <Hop3114@gmail.com>
Fix import
Co-authored-by: Hop311 <Hop3114@gmail.com>
Apply comments
Log errors and return result when applying history
Cleanup
Diffstat (limited to 'src/openvic-simulation/InstanceManager.cpp')
-rw-r--r-- | src/openvic-simulation/InstanceManager.cpp | 59 |
1 files changed, 33 insertions, 26 deletions
diff --git a/src/openvic-simulation/InstanceManager.cpp b/src/openvic-simulation/InstanceManager.cpp index eaa0692..670cbfc 100644 --- a/src/openvic-simulation/InstanceManager.cpp +++ b/src/openvic-simulation/InstanceManager.cpp @@ -38,32 +38,7 @@ void InstanceManager::update_gamestate() { currently_updating_gamestate = true; Logger::info("Update: ", today); - - if constexpr (ProvinceInstance::ADD_OWNER_CONTRIBUTION) { - // Calculate local province modifier sums first, then national country modifier sums, then loop over owned provinces - // adding their contributions to the owner country's modifier sum and loop over them again to add the country's total - // (including province contributions) to the provinces' modifier sum. This results in every country and province - // having a full copy of all the modifiers affecting them in their modifier sum. - map_instance.update_modifier_sums( - today, definition_manager.get_modifier_manager().get_static_modifier_cache() - ); - country_instance_manager.update_modifier_sums( - today, definition_manager.get_modifier_manager().get_static_modifier_cache() - ); - } else { - // Calculate national country modifier sums first, then local province modifier sums, adding province contributions - // to owner countries' modifier sums if each province has an owner. This results in every country having a full copy - // of all the modifiers affecting them in their modifier sum, but provinces only having their directly/locally applied - // modifiers in their modifier sum, hence requiring both province and owner country modifier effect values to be looked - // up and added together to get the full effect on the province. - country_instance_manager.update_modifier_sums( - today, definition_manager.get_modifier_manager().get_static_modifier_cache() - ); - map_instance.update_modifier_sums( - today, definition_manager.get_modifier_manager().get_static_modifier_cache() - ); - } - + update_modifier_sums(); // Update gamestate... map_instance.update_gamestate(today, definition_manager.get_define_manager()); country_instance_manager.update_gamestate( @@ -163,6 +138,11 @@ bool InstanceManager::load_bookmark(Bookmark const* new_bookmark) { map_instance, definition_manager.get_pop_manager().get_pop_types() ); + if (ret) { + update_modifier_sums(); + map_instance.initialise_for_new_game(definition_manager.get_modifier_manager().get_modifier_effect_cache()); + } + return ret; } @@ -204,3 +184,30 @@ bool InstanceManager::expand_selected_province_building(size_t building_index) { } return province->expand_building(building_index); } + +void InstanceManager::update_modifier_sums() { + if constexpr (ProvinceInstance::ADD_OWNER_CONTRIBUTION) { + // Calculate local province modifier sums first, then national country modifier sums, then loop over owned provinces + // adding their contributions to the owner country's modifier sum and loop over them again to add the country's total + // (including province contributions) to the provinces' modifier sum. This results in every country and province + // having a full copy of all the modifiers affecting them in their modifier sum. + map_instance.update_modifier_sums( + today, definition_manager.get_modifier_manager().get_static_modifier_cache() + ); + country_instance_manager.update_modifier_sums( + today, definition_manager.get_modifier_manager().get_static_modifier_cache() + ); + } else { + // Calculate national country modifier sums first, then local province modifier sums, adding province contributions + // to owner countries' modifier sums if each province has an owner. This results in every country having a full copy + // of all the modifiers affecting them in their modifier sum, but provinces only having their directly/locally applied + // modifiers in their modifier sum, hence requiring both province and owner country modifier effect values to be looked + // up and added together to get the full effect on the province. + country_instance_manager.update_modifier_sums( + today, definition_manager.get_modifier_manager().get_static_modifier_cache() + ); + map_instance.update_modifier_sums( + today, definition_manager.get_modifier_manager().get_static_modifier_cache() + ); + } +}
\ No newline at end of file |