aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-simulation/dataloader/Dataloader.cpp
diff options
context:
space:
mode:
author zaaarf <me@zaaarf.foo>2023-12-05 10:16:27 +0100
committer zaaarf <me@zaaarf.foo>2023-12-05 10:16:27 +0100
commitfa2ca50905f327713207069cf9a2e66cf6c00076 (patch)
treea6c82c543d5fc52183ca1363e171dbd4cc161943 /src/openvic-simulation/dataloader/Dataloader.cpp
parent444a27726695478e44e0166e75df1f354b6432d5 (diff)
feat: implemented invention dataloading
Diffstat (limited to 'src/openvic-simulation/dataloader/Dataloader.cpp')
-rw-r--r--src/openvic-simulation/dataloader/Dataloader.cpp57
1 files changed, 51 insertions, 6 deletions
diff --git a/src/openvic-simulation/dataloader/Dataloader.cpp b/src/openvic-simulation/dataloader/Dataloader.cpp
index 6bf43f6..ef0b398 100644
--- a/src/openvic-simulation/dataloader/Dataloader.cpp
+++ b/src/openvic-simulation/dataloader/Dataloader.cpp
@@ -648,10 +648,30 @@ bool Dataloader::_load_goods(GameManager& game_manager) const {
return ret;
}
+bool Dataloader::_load_rebel_types(GameManager& game_manager) const {
+ static constexpr std::string_view rebel_types_file = "common/rebel_types.txt";
+
+ PoliticsManager& politics_manager = game_manager.get_politics_manager();
+ RebelManager& rebel_manager = politics_manager.get_rebel_manager();
+
+ bool ret = rebel_manager.load_rebels_file(
+ politics_manager.get_ideology_manager(),
+ politics_manager.get_government_type_manager(),
+ parse_defines(lookup_file(rebel_types_file)).get_file_node()
+ );
+
+ if(!rebel_manager.generate_modifiers(game_manager.get_modifier_manager())) {
+ Logger::error("Failed to generate rebel type-based modifiers!");
+ ret &= false;
+ }
+
+ return ret;
+}
+
bool Dataloader::_load_technologies(GameManager& game_manager) const {
static constexpr std::string_view technology_file = "common/technology.txt";
- TechnologyManager& technology_manager = game_manager.get_technology_manager();
+ TechnologyManager& technology_manager = game_manager.get_research_manager().get_technology_manager();
bool ret = true;
@@ -694,6 +714,28 @@ bool Dataloader::_load_technologies(GameManager& game_manager) const {
return ret;
}
+bool Dataloader::_load_inventions(GameManager& game_manager) const {
+ static constexpr std::string_view inventions_directory = "inventions";
+
+ InventionManager& invention_manager = game_manager.get_research_manager().get_invention_manager();
+
+ bool ret = apply_to_files(
+ lookup_files_in_dir(inventions_directory, ".txt"),
+ [&game_manager, &invention_manager](fs::path const& file) -> bool {
+ return invention_manager.load_inventions_file(
+ game_manager.get_modifier_manager(),
+ game_manager.get_military_manager().get_unit_manager(),
+ game_manager.get_economy_manager().get_building_manager(),
+ parse_defines(file).get_file_node()
+ );
+ }
+ );
+
+ invention_manager.lock_inventions();
+
+ return ret;
+}
+
bool Dataloader::_load_history(GameManager& game_manager, bool unused_history_file_warnings) const {
/* Country History */
@@ -910,7 +952,6 @@ bool Dataloader::load_defines(GameManager& game_manager) const {
static constexpr std::string_view event_modifiers_file = "common/event_modifiers.txt";
static constexpr std::string_view static_modifiers_file = "common/static_modifiers.txt";
static constexpr std::string_view triggered_modifiers_file = "common/triggered_modifiers.txt";
- static constexpr std::string_view rebel_types_file = "common/rebel_types.txt";
bool ret = true;
@@ -1001,6 +1042,10 @@ bool Dataloader::load_defines(GameManager& game_manager) const {
Logger::error("Failed to load buildings!");
ret = false;
}
+ if (!_load_rebel_types(game_manager)) {
+ Logger::error("Failed to load rebel types!");
+ ret = false;
+ }
if (!_load_technologies(game_manager)) {
ret = false;
}
@@ -1028,6 +1073,10 @@ bool Dataloader::load_defines(GameManager& game_manager) const {
Logger::error("Failed to load triggered modifiers!");
ret = false;
}
+ if (!_load_inventions(game_manager)) {
+ Logger::error("Failed to load inventions!");
+ ret = false;
+ }
if (!_load_map_dir(game_manager)) {
Logger::error("Failed to load map!");
ret = false;
@@ -1056,10 +1105,6 @@ bool Dataloader::load_defines(GameManager& game_manager) const {
Logger::error("Failed to load countries!");
ret = false;
}
- if (!game_manager.get_politics_manager().load_rebels_file(parse_defines(lookup_file(rebel_types_file)).get_file_node())) {
- Logger::error("Failed to load rebel types!");
- ret = false;
- }
if (!_load_history(game_manager, false)) {
Logger::error("Failed to load history!");
ret = false;