diff options
Diffstat (limited to 'src/openvic/pop')
-rw-r--r-- | src/openvic/pop/Pop.cpp | 22 | ||||
-rw-r--r-- | src/openvic/pop/Pop.hpp | 9 |
2 files changed, 29 insertions, 2 deletions
diff --git a/src/openvic/pop/Pop.cpp b/src/openvic/pop/Pop.cpp index c4b11b8..81915f6 100644 --- a/src/openvic/pop/Pop.cpp +++ b/src/openvic/pop/Pop.cpp @@ -31,6 +31,22 @@ Pop::pop_size_t Pop::get_size() const { return size; } +Pop::pop_size_t Pop::get_num_promoted() const { + return num_promoted; +} + +Pop::pop_size_t Pop::get_num_demoted() const { + return num_demoted; +} + +Pop::pop_size_t Pop::get_num_migrated() const { + return num_migrated; +} + +Pop::pop_size_t Pop::get_pop_daily_change() const { + return Pop::get_num_promoted() - (Pop::get_num_demoted() + Pop::get_num_migrated()); +} + PopType::PopType(const std::string_view new_identifier, colour_t new_colour, strata_t new_strata, sprite_t new_sprite, Pop::pop_size_t new_max_size, Pop::pop_size_t new_merge_max_size, @@ -53,6 +69,10 @@ PopType::sprite_t PopType::get_sprite() const { return sprite; } +PopType::strata_t PopType::get_strata() const { + return strata; +} + Pop::pop_size_t PopType::get_max_size() const { return max_size; } @@ -86,6 +106,7 @@ static const std::string test_pop_type_poor = "test_pop_type_poor"; static const std::string test_pop_type_middle = "test_pop_type_middle"; static const std::string test_pop_type_rich = "test_pop_type_rich"; + PopManager::PopManager() : pop_types { "pop types" } { culture_manager.add_graphical_culture_type(test_graphical_culture_type); culture_manager.lock_graphical_culture_types(); @@ -149,6 +170,7 @@ void PopManager::generate_test_pops(Province& province) const { static PopType const& type_rich = *get_pop_type_by_identifier(test_pop_type_rich); static Culture const& culture = *culture_manager.get_culture_by_identifier(test_culture); static Religion const& religion = *religion_manager.get_religion_by_identifier(test_religion); + province.add_pop({ type_poor, culture, religion, static_cast<Pop::pop_size_t>(province.get_index() * province.get_index()) * 100 }); province.add_pop({ type_middle, culture, religion, static_cast<Pop::pop_size_t>(province.get_index() * province.get_index()) * 50 }); province.add_pop({ type_rich, culture, religion, static_cast<Pop::pop_size_t>(province.get_index()) * 1000 }); diff --git a/src/openvic/pop/Pop.hpp b/src/openvic/pop/Pop.hpp index 5bd1b90..db9633f 100644 --- a/src/openvic/pop/Pop.hpp +++ b/src/openvic/pop/Pop.hpp @@ -15,13 +15,13 @@ namespace OpenVic { struct Pop { friend struct PopManager; - using pop_size_t = uint32_t; + using pop_size_t = int64_t; private: PopType const& type; Culture const& culture; Religion const& religion; - pop_size_t size; + pop_size_t size, num_migrated, num_promoted, num_demoted, num_migrated; Pop(PopType const& new_type, Culture const& new_culture, Religion const& new_religion, pop_size_t new_size); @@ -35,6 +35,10 @@ namespace OpenVic { Culture const& get_culture() const; Religion const& get_religion() const; pop_size_t get_size() const; + pop_size_t get_num_promoted() const; + pop_size_t get_num_demoted() const; + pop_size_t get_num_migrated() const; + pop_size_t get_pop_daily_change() const; }; /* REQUIREMENTS: @@ -63,6 +67,7 @@ namespace OpenVic { public: PopType(PopType&&) = default; + strata_t get_strata() const; sprite_t get_sprite() const; Pop::pop_size_t get_max_size() const; Pop::pop_size_t get_merge_max_size() const; |