#include "config.h" #include "third-party/json.hpp" #include "common/util/FileUtil.h" Config gConfig; Config& get_config() { return gConfig; } void set_config(const std::string& path_to_config_file) { auto config_str = file_util::read_text_file(path_to_config_file); // to ignore comments in json, which may be useful auto cfg = nlohmann::json::parse(config_str, nullptr, true, true); gConfig.game_version = cfg.at("game_version").get(); gConfig.dgo_names = cfg.at("dgo_names").get>(); gConfig.object_file_names = cfg.at("object_file_names").get>(); gConfig.str_file_names = cfg.at("str_file_names").get>(); if (cfg.contains("obj_file_name_map_file")) { gConfig.obj_file_name_map_file = cfg.at("obj_file_name_map_file").get(); } gConfig.write_disassembly = cfg.at("write_disassembly").get(); gConfig.write_hexdump = cfg.at("write_hexdump").get(); gConfig.write_scripts = cfg.at("write_scripts").get(); gConfig.write_hexdump_on_v3_only = cfg.at("write_hexdump_on_v3_only").get(); gConfig.disassemble_objects_without_functions = cfg.at("disassemble_objects_without_functions").get(); gConfig.write_hex_near_instructions = cfg.at("write_hex_near_instructions").get(); gConfig.analyze_functions = cfg.at("analyze_functions").get(); gConfig.process_tpages = cfg.at("process_tpages").get(); gConfig.process_game_text = cfg.at("process_game_text").get(); gConfig.process_game_count = cfg.at("process_game_count").get(); gConfig.dump_objs = cfg.at("dump_objs").get(); gConfig.write_func_json = cfg.at("write_func_json").get(); gConfig.function_type_prop = cfg.at("function_type_prop").get(); std::vector asm_functions_by_name = cfg.at("asm_functions_by_name").get>(); for (const auto& x : asm_functions_by_name) { gConfig.asm_functions_by_name.insert(x); } std::vector pair_functions_by_name = cfg.at("pair_functions_by_name").get>(); for (const auto& x : pair_functions_by_name) { gConfig.pair_functions_by_name.insert(x); } auto bad_inspect = cfg.at("types_with_bad_inspect_methods").get>(); for (const auto& x : bad_inspect) { gConfig.bad_inspect_types.insert(x); } }