TmpMenu/src/services/globals/globals_service.cpp
maybegreat48 97a8c5d60b Add more spoofing options and added clang-format (#1020)
* feat(Spoofing): add spoofing
* feat(Spoofing): prepare code for player attach
* remove(PlayerAttach): isn't going to work due to netsync architecture
* fix(GUI): fix scaling
* feat(Project): add clang-format file
* feat(Classes): update classes
* fix(BlackHole): remove unnecessary cleanup
* fix(Formatting): fix formatting for initializer lists
* feat(clang-format): Set tab width and 1 space before comment

Co-authored-by: Yimura <24669514+Yimura@users.noreply.github.com>
2023-03-01 21:27:15 +00:00

88 lines
1.4 KiB
C++

#include "globals_service.hpp"
#include "thread_pool.hpp"
namespace big
{
globals_service::globals_service()
{
g_globals_service = this;
}
globals_service::~globals_service()
{
g_globals_service = nullptr;
m_running = false;
this->save();
}
void globals_service::build(nlohmann::json& data)
{
m_globals.clear();
for (auto& offset : data)
m_globals.push_back(global(offset));
for (auto& global : m_globals)
global.build_cache();
}
bool globals_service::load()
{
std::string path = std::getenv("appdata");
path += this->file_location;
std::ifstream file(path);
if (!file.is_open())
return false;
try
{
nlohmann::json j;
j << file;
this->build(j);
}
catch (const std::exception&)
{
LOG(WARNING) << "Failure to parse globals.json, aborting...";
return false;
}
return true;
}
void globals_service::loop()
{
while (m_running)
for (auto& global : m_globals)
if (global.m_freeze)
global.write();
}
void globals_service::save()
{
nlohmann::json j = nlohmann::json::array();
for (auto& global : m_globals)
j.push_back(global.to_json());
std::string path = std::getenv("appdata");
path += this->file_location;
std::ofstream file(path, std::ios::out | std::ios::trunc);
try
{
file << j.dump(4);
file.close();
}
catch (const std::exception&)
{
LOG(WARNING) << "Failed to write to globals.json";
}
}
}