aboutsummaryrefslogtreecommitdiff
path: root/src/openvic/pop/Pop.cpp
diff options
context:
space:
mode:
author Hop311 <Hop3114@gmail.com>2023-09-09 23:49:54 +0200
committer GitHub <noreply@github.com>2023-09-09 23:49:54 +0200
commit6278a35f4704574933464700026d8deb997da5c1 (patch)
treeeb36a9b030b263d825eb93638e64deb0dbd38a78 /src/openvic/pop/Pop.cpp
parentbec619fc8f554cb075fcef2428f3b6bdb5e88e82 (diff)
parent3d7fbd9b376811ca0ed226fa78bcc8b6279ba8dc (diff)
Merge pull request #14 from OpenVicProject/dataloading
Dataloading scaffolding + basic culture and pop history loading
Diffstat (limited to 'src/openvic/pop/Pop.cpp')
-rw-r--r--src/openvic/pop/Pop.cpp180
1 files changed, 0 insertions, 180 deletions
diff --git a/src/openvic/pop/Pop.cpp b/src/openvic/pop/Pop.cpp
deleted file mode 100644
index 81915f6..0000000
--- a/src/openvic/pop/Pop.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-#include "Pop.hpp"
-
-#include <cassert>
-
-#include "../map/Province.hpp"
-#include "../utility/Logger.hpp"
-
-using namespace OpenVic;
-
-Pop::Pop(PopType const& new_type, Culture const& new_culture, Religion const& new_religion, pop_size_t new_size)
- : type { new_type },
- culture { new_culture },
- religion { new_religion },
- size { new_size } {
- assert(size > 0);
-}
-
-PopType const& Pop::get_type() const {
- return type;
-}
-
-Culture const& Pop::get_culture() const {
- return culture;
-}
-
-Religion const& Pop::get_religion() const {
- return religion;
-}
-
-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,
- bool new_state_capital_only, bool new_demote_migrant, bool new_is_artisan, bool new_is_slave)
- : HasIdentifierAndColour { new_identifier, new_colour, true },
- strata { new_strata },
- sprite { new_sprite },
- max_size { new_max_size },
- merge_max_size { new_merge_max_size },
- state_capital_only { new_state_capital_only },
- demote_migrant { new_demote_migrant },
- is_artisan { new_is_artisan },
- is_slave { new_is_slave } {
- assert(sprite > 0);
- assert(max_size > 0);
- assert(merge_max_size > 0);
-}
-
-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;
-}
-
-Pop::pop_size_t PopType::get_merge_max_size() const {
- return merge_max_size;
-}
-
-bool PopType::get_state_capital_only() const {
- return state_capital_only;
-}
-
-bool PopType::get_demote_migrant() const {
- return demote_migrant;
-}
-
-bool PopType::get_is_artisan() const {
- return is_artisan;
-}
-
-bool PopType::get_is_slave() const {
- return is_slave;
-}
-
-static const std::string test_graphical_culture_type = "test_graphical_culture_type";
-static const std::string test_culture_group = "test_culture_group";
-static const std::string test_culture = "test_culture";
-static const std::string test_religion_group = "test_religion_group";
-static const std::string test_religion = "test_religion";
-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();
-
- culture_manager.add_culture_group(test_culture_group, culture_manager.get_graphical_culture_type_by_identifier(test_graphical_culture_type));
- culture_manager.lock_culture_groups();
-
- culture_manager.add_culture(test_culture, 0x0000FF, culture_manager.get_culture_group_by_identifier(test_culture_group),
- { "john" }, { "smith" });
- culture_manager.lock_cultures();
-
- religion_manager.add_religion_group(test_religion_group);
- religion_manager.lock_religion_groups();
-
- religion_manager.add_religion(test_religion, 0xFF0000, religion_manager.get_religion_group_by_identifier(test_religion_group), 1, false);
- religion_manager.lock_religions();
-
- add_pop_type(test_pop_type_poor, 0xFF0000, PopType::strata_t::POOR, 1, 1, 1, false, false, false, false);
- add_pop_type(test_pop_type_middle, 0x00FF00, PopType::strata_t::MIDDLE, 1, 1, 1, false, false, false, false);
- add_pop_type(test_pop_type_rich, 0x0000FF, PopType::strata_t::RICH, 1, 1, 1, false, false, false, false);
- lock_pop_types();
-}
-
-return_t PopManager::add_pop_type(const std::string_view identifier, colour_t colour, PopType::strata_t strata, PopType::sprite_t sprite,
- Pop::pop_size_t max_size, Pop::pop_size_t merge_max_size, bool state_capital_only, bool demote_migrant, bool is_artisan, bool is_slave) {
- if (identifier.empty()) {
- Logger::error("Invalid pop type identifier - empty!");
- return FAILURE;
- }
- if (colour > MAX_COLOUR_RGB) {
- Logger::error("Invalid pop type colour for ", identifier, ": ", PopType::colour_to_hex_string(colour));
- return FAILURE;
- }
- if (sprite <= 0) {
- Logger::error("Invalid pop type sprite index for ", identifier, ": ", sprite);
- return FAILURE;
- }
- if (max_size <= 0) {
- Logger::error("Invalid pop type max size for ", identifier, ": ", max_size);
- return FAILURE;
- }
- if (merge_max_size <= 0) {
- Logger::error("Invalid pop type merge max size for ", identifier, ": ", merge_max_size);
- return FAILURE;
- }
- return pop_types.add_item({ identifier, colour, strata, sprite, max_size, merge_max_size, state_capital_only, demote_migrant, is_artisan, is_slave });
-}
-
-void PopManager::lock_pop_types() {
- pop_types.lock();
-}
-
-PopType const* PopManager::get_pop_type_by_identifier(const std::string_view identifier) const {
- return pop_types.get_item_by_identifier(identifier);
-}
-
-void PopManager::generate_test_pops(Province& province) const {
- if (pop_types.is_locked()) {
- static PopType const& type_poor = *get_pop_type_by_identifier(test_pop_type_poor);
- static PopType const& type_middle = *get_pop_type_by_identifier(test_pop_type_middle);
- 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 });
- } else {
- Logger::error("Cannot generate pops before pop types registry is locked!");
- }
-}