diff options
author | hop311 <hop3114@gmail.com> | 2023-12-12 01:34:53 +0100 |
---|---|---|
committer | hop311 <hop3114@gmail.com> | 2023-12-13 20:54:36 +0100 |
commit | 89c93f98b865c20cd3c3486a9b91323565e759fc (patch) | |
tree | 54155b9cf2a4384585941495f7525b77fa60d4e7 /src/openvic-simulation/map | |
parent | f556519575bbbf24d247f341ca762fb1878ed64d (diff) |
Province pop history + country government flag override refactors
Diffstat (limited to 'src/openvic-simulation/map')
-rw-r--r-- | src/openvic-simulation/map/Map.cpp | 7 | ||||
-rw-r--r-- | src/openvic-simulation/map/Province.cpp | 13 | ||||
-rw-r--r-- | src/openvic-simulation/map/Province.hpp | 1 |
3 files changed, 21 insertions, 0 deletions
diff --git a/src/openvic-simulation/map/Map.cpp b/src/openvic-simulation/map/Map.cpp index 18f72cf..5d8c6e2 100644 --- a/src/openvic-simulation/map/Map.cpp +++ b/src/openvic-simulation/map/Map.cpp @@ -294,8 +294,15 @@ bool Map::apply_history_to_provinces(ProvinceHistoryManager const& history_manag if (!province.get_water()) { ProvinceHistoryMap const* history_map = history_manager.get_province_history(&province); if (history_map != nullptr) { + ProvinceHistoryEntry const* pop_history_entry = nullptr; for (ProvinceHistoryEntry const* entry : history_map->get_entries_up_to(date)) { province.apply_history_to_province(entry); + if (!entry->get_pops().empty()) { + pop_history_entry = entry; + } + } + if (pop_history_entry != nullptr) { + province.add_pop_vec(pop_history_entry->get_pops()); } } } diff --git a/src/openvic-simulation/map/Province.cpp b/src/openvic-simulation/map/Province.cpp index 19d06df..8094463 100644 --- a/src/openvic-simulation/map/Province.cpp +++ b/src/openvic-simulation/map/Province.cpp @@ -68,6 +68,19 @@ bool Province::add_pop(Pop&& pop) { } } +bool Province::add_pop_vec(std::vector<Pop> const& pop_vec) { + if (!get_water()) { + pops.reserve(pops.size() + pop_vec.size()); + for (Pop const& pop : pop_vec) { + pops.push_back(pop); + } + return true; + } else { + Logger::error("Trying to add pop vector to water province ", get_identifier()); + return false; + } +} + size_t Province::get_pop_count() const { return pops.size(); } diff --git a/src/openvic-simulation/map/Province.hpp b/src/openvic-simulation/map/Province.hpp index dc82deb..1eea458 100644 --- a/src/openvic-simulation/map/Province.hpp +++ b/src/openvic-simulation/map/Province.hpp @@ -101,6 +101,7 @@ namespace OpenVic { bool expand_building(std::string_view building_type_identifier); bool add_pop(Pop&& pop); + bool add_pop_vec(std::vector<Pop> const& pop_vec); size_t get_pop_count() const; void update_pops(); |