From 2a2e8b6e5c4657aeeb4f7af3ce90684d9a55d555 Mon Sep 17 00:00:00 2001 From: Spartan322 Date: Wed, 11 Oct 2023 11:32:18 -0400 Subject: Add Country Loading Searches for countries.txt then loads the country from the directed file --- src/openvic-simulation/dataloader/Dataloader.cpp | 27 ++++++++++++++++++++++++ src/openvic-simulation/dataloader/Dataloader.hpp | 1 + 2 files changed, 28 insertions(+) (limited to 'src/openvic-simulation/dataloader') diff --git a/src/openvic-simulation/dataloader/Dataloader.cpp b/src/openvic-simulation/dataloader/Dataloader.cpp index 15c7ce7..267ee40 100644 --- a/src/openvic-simulation/dataloader/Dataloader.cpp +++ b/src/openvic-simulation/dataloader/Dataloader.cpp @@ -472,6 +472,28 @@ bool Dataloader::_load_units(UnitManager& unit_manager, GoodManager const& good_ return ret; } +bool Dataloader::_load_countries(GameManager& game_manager, fs::path const& countries_file, ast::NodeCPtr root) const { + bool is_dynamic = false; + + bool ret = expect_dictionary( + [this, &game_manager, &is_dynamic, &countries_file](std::string_view key, ast::NodeCPtr value) -> bool { + if (key == "dynamic_tags") { + return expect_bool(assign_variable_callback(is_dynamic))(value); + } + + std::string_view data_path; + + if (!expect_string(assign_variable_callback(data_path))(value)) { + return false; + } + + return game_manager.get_country_manager().load_country_data_file(game_manager, key, is_dynamic, Dataloader::parse_defines(lookup_file(countries_file.parent_path() / data_path)).get_file_node()); + } + )(root); + game_manager.get_country_manager().lock_countries(); + return ret; +} + bool Dataloader::_load_map_dir(GameManager& game_manager, fs::path const& map_directory) const { Map& map = game_manager.get_map(); @@ -597,6 +619,7 @@ bool Dataloader::load_defines(GameManager& game_manager) const { static const fs::path production_types_file = "common/production_types.txt"; static const fs::path religion_file = "common/religion.txt"; static const fs::path leader_traits_file = "common/traits.txt"; + static const fs::path countries_file = "common/countries.txt"; bool ret = true; @@ -643,6 +666,10 @@ bool Dataloader::load_defines(GameManager& game_manager) const { Logger::error("Failed to load issues!"); ret = false; } + if (!_load_countries(game_manager, countries_file, parse_defines(lookup_file(countries_file)).get_file_node())) { + Logger::error("Failed to load countries!"); + ret = false; + } if (!game_manager.get_economy_manager().load_production_types_file( game_manager.get_pop_manager(), parse_defines(lookup_file(production_types_file)).get_file_node())) { diff --git a/src/openvic-simulation/dataloader/Dataloader.hpp b/src/openvic-simulation/dataloader/Dataloader.hpp index c268a94..4d67501 100644 --- a/src/openvic-simulation/dataloader/Dataloader.hpp +++ b/src/openvic-simulation/dataloader/Dataloader.hpp @@ -26,6 +26,7 @@ namespace OpenVic { bool _load_pop_types(PopManager& pop_manager, fs::path const& pop_type_directory) const; bool _load_units(UnitManager& unit_manager, GoodManager const& good_manager, fs::path const& units_directory) const; bool _load_map_dir(GameManager& game_manager, fs::path const& map_directory) const; + bool _load_countries(GameManager& game_manager, fs::path const& countries_file, ast::NodeCPtr root) const; public: static ovdl::v2script::Parser parse_defines(fs::path const& path); -- cgit v1.2.3-56-ga3b1