diff options
Diffstat (limited to 'src/openvic-simulation/dataloader')
-rw-r--r-- | src/openvic-simulation/dataloader/Dataloader.cpp | 19 | ||||
-rw-r--r-- | src/openvic-simulation/dataloader/Dataloader.hpp | 2 |
2 files changed, 18 insertions, 3 deletions
diff --git a/src/openvic-simulation/dataloader/Dataloader.cpp b/src/openvic-simulation/dataloader/Dataloader.cpp index d0d9506..55dbf8a 100644 --- a/src/openvic-simulation/dataloader/Dataloader.cpp +++ b/src/openvic-simulation/dataloader/Dataloader.cpp @@ -1,4 +1,5 @@ #include "Dataloader.hpp" +#include <filesystem> #include <openvic-dataloader/csv/Parser.hpp> #include <openvic-dataloader/detail/CallbackOStream.hpp> @@ -6,6 +7,7 @@ #include "openvic-simulation/GameManager.hpp" #include "openvic-simulation/utility/Logger.hpp" +#include "units/Unit.hpp" using namespace OpenVic; using namespace OpenVic::NodeTools; @@ -150,13 +152,19 @@ bool Dataloader::_load_pop_types(PopManager& pop_manager, fs::path const& pop_ty return pop_manager.load_pop_type_file(file.stem().string(), _parse_defines(file).get_file_node()); } ); - if (!ret) { - Logger::error("Failed to load pop types!"); - } pop_manager.lock_pop_types(); return ret; } +bool Dataloader::_load_units(UnitManager& unit_manager, fs::path const& units_directory) const { + const bool ret = apply_to_files_in_dir(units_directory, ".txt", + [&unit_manager](fs::path const& file) -> bool { + return unit_manager.load_unit_file(_parse_defines(file).get_file_node()); + } + ); + unit_manager.lock_units(); + return ret;} + bool Dataloader::_load_map_dir(GameManager& game_manager, fs::path const& map_directory) const { Map& map = game_manager.map; @@ -260,6 +268,7 @@ bool Dataloader::load_defines(GameManager& game_manager) const { static const fs::path ideology_file = "common/ideologies.txt"; static const fs::path issues_file = "common/issues.txt"; static const fs::path map_directory = "map"; + static const fs::path units_directory = "units"; bool ret = true; @@ -291,6 +300,10 @@ bool Dataloader::load_defines(GameManager& game_manager) const { Logger::error("Failed to load issues!"); ret = false; } + if (!_load_units(game_manager.unit_manager, units_directory)) { + Logger::error("Failed to load units!"); + ret = false; + } if (!_load_map_dir(game_manager, map_directory)) { Logger::error("Failed to load map!"); ret = false; diff --git a/src/openvic-simulation/dataloader/Dataloader.hpp b/src/openvic-simulation/dataloader/Dataloader.hpp index 6741361..9e15102 100644 --- a/src/openvic-simulation/dataloader/Dataloader.hpp +++ b/src/openvic-simulation/dataloader/Dataloader.hpp @@ -5,6 +5,7 @@ #include <vector> #include "openvic-simulation/dataloader/NodeTools.hpp" +#include "units/Unit.hpp" namespace OpenVic { namespace fs = std::filesystem; @@ -21,6 +22,7 @@ namespace OpenVic { path_vector_t roots; bool _load_pop_types(PopManager& pop_manager, fs::path const& pop_type_directory) const; + bool _load_units(UnitManager& unit_manager, fs::path const& units_directory) const; bool _load_map_dir(GameManager& game_manager, fs::path const& map_directory) const; public: |