#include "tracker_config.h" #include #include #include "global.h" void TrackerConfig::Load() { try { YAML::Node file = YAML::LoadFile(filename_); connection_details.ap_server = file["ap_server"].as(); connection_details.ap_player = file["ap_player"].as(); connection_details.ap_password = file["ap_password"].as(); asked_to_check_for_updates = file["asked_to_check_for_updates"].as(); should_check_for_updates = file["should_check_for_updates"].as(); hybrid_areas = file["hybrid_areas"].as(); show_hunt_panels = file["show_hunt_panels"].as(); if (file["connection_history"]) { for (const auto& connection : file["connection_history"]) { connection_history.push_back(ConnectionDetails{ .ap_server = connection["ap_server"].as(), .ap_player = connection["ap_player"].as(), .ap_password = connection["ap_password"].as() }); } } ipc_address = file["ipc_address"].as(); } catch (const std::exception&) { // It's fine if the file can't be loaded. } } void TrackerConfig::Save() { YAML::Node output; output["ap_server"] = connection_details.ap_server; output["ap_player"] = connection_details.ap_player; output["ap_password"] = connection_details.ap_password; output["asked_to_check_for_updates"] = asked_to_check_for_updates; output["should_check_for_updates"] = should_check_for_updates; output["hybrid_areas"] = hybrid_areas; output["show_hunt_panels"] = show_hunt_panels; output.remove("connection_history"); for (const ConnectionDetails& details : connection_history) { YAML::Node connection; connection["ap_server"] = details.ap_server; connection["ap_player"] = details.ap_player; connection["ap_password"] = details.ap_password; output["connection_history"].push_back(connection); } output["ipc_address"] = ipc_address; std::ofstream filewriter(filename_); filewriter << output; } TrackerConfig& GetTrackerConfig() { static TrackerConfig* instance = new TrackerConfig(GetAbsolutePath("config.yaml")); return *instance; }