Cat_save changes and playerlist color changes

* Removed cat_save and cat_load thread
* Made the cat_save system not save variables set to default settings and made cat_load reset all variables to default before loading
This commit is contained in:
TotallyNotElite 2019-05-25 15:38:44 +02:00
parent 6be70d9beb
commit c039ab5978
9 changed files with 22 additions and 72 deletions

View File

@ -38,7 +38,7 @@
namespace settings namespace settings
{ {
extern std::atomic<bool> RVarLock; extern std::atomic<bool> cathook_disabled;
enum class VariableType enum class VariableType
{ {
BOOL, BOOL,

View File

@ -42,7 +42,7 @@ class SettingsWriter
public: public:
explicit SettingsWriter(Manager &manager); explicit SettingsWriter(Manager &manager);
bool saveTo(std::string path, bool only_changed); bool saveTo(std::string path);
protected: protected:
void write(std::string name, IVariable *variable); void write(std::string name, IVariable *variable);
@ -52,4 +52,4 @@ protected:
std::ofstream stream{}; std::ofstream stream{};
Manager &manager; Manager &manager;
}; };
} // namespace settings } // namespace settings

View File

@ -45,7 +45,7 @@ CUserCmd *current_user_cmd{ nullptr };
bool isHackActive() bool isHackActive()
{ {
return !settings::RVarLock.load() && *global_enable; return !settings::cathook_disabled.load() && *global_enable;
} }
GlobalSettings g_Settings{}; GlobalSettings g_Settings{};

View File

@ -409,7 +409,7 @@ void hack::Shutdown()
return; return;
hack::shutdown = true; hack::shutdown = true;
// Stop cathook stuff // Stop cathook stuff
settings::RVarLock.store(true); settings::cathook_disabled.store(true);
playerlist::Save(); playerlist::Save();
#if ENABLE_VISUALS #if ENABLE_VISUALS
sdl_hooks::cleanSdlHooks(); sdl_hooks::cleanSdlHooks();

View File

@ -51,8 +51,7 @@ static CatCommand cat("cat", "", [](const CCommand &args) {
} }
}); });
void save_thread(const int ArgC, const std::string ArgS) static CatCommand save("save", "", [](const CCommand &args) {
{
settings::SettingsWriter writer{ settings::Manager::instance() }; settings::SettingsWriter writer{ settings::Manager::instance() };
DIR *config_directory = opendir(DATA_PATH "/configs"); DIR *config_directory = opendir(DATA_PATH "/configs");
@ -62,86 +61,33 @@ void save_thread(const int ArgC, const std::string ArgS)
mkdir(DATA_PATH "/configs", S_IRWXU | S_IRWXG); mkdir(DATA_PATH "/configs", S_IRWXU | S_IRWXG);
} }
if (ArgC == 1) if (args.ArgC() == 1)
{ {
writer.saveTo(DATA_PATH "/configs/default.conf", false); writer.saveTo(DATA_PATH "/configs/default.conf");
} }
else else
{ {
writer.saveTo(std::string(DATA_PATH "/configs/") + ArgS + ".conf", false); writer.saveTo(std::string(DATA_PATH "/configs/") + args.ArgS() + ".conf");
} }
logging::Info("cat_save: Sorting configs..."); logging::Info("cat_save: Sorting configs...");
getAndSortAllConfigs(); getAndSortAllConfigs();
logging::Info("cat_save: Closing dir..."); logging::Info("cat_save: Closing dir...");
closedir(config_directory); closedir(config_directory);
logging::Info("cat_save: Enabeling cathook...");
settings::RVarLock.store(false);
}
static CatCommand save("save", "", [](const CCommand &args) {
if (!settings::RVarLock.load())
{
settings::RVarLock.store(true);
std::thread loader;
if (args.ArgC() == 1)
{
std::string string;
loader = std::thread(save_thread, 1, string);
}
else
{
loader = std::thread(save_thread, args.ArgC(), args.Arg(1));
}
loader.detach();
}
}); });
void load_thread(const int ArgC, const std::string ArgS) static CatCommand load("load", "", [](const CCommand &args) {
{
settings::SettingsReader loader{ settings::Manager::instance() }; settings::SettingsReader loader{ settings::Manager::instance() };
if (ArgC == 1) if (args.ArgC() == 1)
{ {
loader.loadFrom(DATA_PATH "/configs/default.conf"); loader.loadFrom(DATA_PATH "/configs/default.conf");
} }
else else
{ {
std::string backup = ArgS; std::string backup = args.ArgS();
std::string ArgS = backup; std::string ArgS = backup;
ArgS.erase(std::remove(ArgS.begin(), ArgS.end(), '\n'), ArgS.end()); ArgS.erase(std::remove(ArgS.begin(), ArgS.end(), '\n'), ArgS.end());
ArgS.erase(std::remove(ArgS.begin(), ArgS.end(), '\r'), ArgS.end()); ArgS.erase(std::remove(ArgS.begin(), ArgS.end(), '\r'), ArgS.end());
#if ENABLE_VISUALS
loader.loadFrom(std::string(DATA_PATH "/configs/") + ArgS + ".conf"); loader.loadFrom(std::string(DATA_PATH "/configs/") + ArgS + ".conf");
#else
for (int i = 0;; i++)
{
if (loader.loadFrom(std::string(DATA_PATH "/configs/") + ArgS + ".conf"))
break;
if (i > 5)
{
logging::Info("cat_load: Force crash. Couldn't load config!");
std::terminate();
}
}
#endif
}
settings::RVarLock.store(false);
}
static CatCommand load("load", "", [](const CCommand &args) {
if (!settings::RVarLock.load())
{
settings::RVarLock.store(true);
std::thread saver;
if (args.ArgC() == 1)
{
std::string string;
saver = std::thread(load_thread, 1, string);
}
else
{
saver = std::thread(load_thread, args.ArgC(), args.Arg(1));
}
saver.detach();
} }
}); });

View File

@ -6,5 +6,5 @@
namespace settings namespace settings
{ {
std::atomic<bool> RVarLock{ false }; std::atomic<bool> cathook_disabled{ false };
} }

View File

@ -14,10 +14,10 @@ settings::SettingsWriter::SettingsWriter(settings::Manager &manager) : manager(m
{ {
} }
bool settings::SettingsWriter::saveTo(std::string path, bool only_changed) bool settings::SettingsWriter::saveTo(std::string path)
{ {
logging::Info("cat_save: started"); logging::Info("cat_save: started");
this->only_changed = only_changed; this->only_changed = true;
stream.open(path, std::ios::out); stream.open(path, std::ios::out);
@ -105,6 +105,11 @@ bool settings::SettingsReader::loadFrom(std::string path)
return false; return false;
} }
for (auto &v : settings::Manager::instance().registered)
{
v.second.variable.fromString(v.second.defaults);
}
while (!stream.fail()) while (!stream.fail())
{ {
char c; char c;

View File

@ -101,7 +101,6 @@ static void initPlayerlist()
pl.state = playerlist::k_EState((int) pl.state + 1); pl.state = playerlist::k_EState((int) pl.state + 1);
if ((int) pl.state > (int) playerlist::k_EState::STATE_LAST) if ((int) pl.state > (int) playerlist::k_EState::STATE_LAST)
pl.state = playerlist::k_EState(0); pl.state = playerlist::k_EState(0);
logging::Info("%s", std::to_string(steam).c_str());
controller->updatePlayerState(userid, playerlist::k_Names[(int) pl.state]); controller->updatePlayerState(userid, playerlist::k_Names[(int) pl.state]);
}); });
} }

View File

@ -12,10 +12,10 @@
Created on 26.07.18. Created on 26.07.18.
*/ */
static settings::RVariable<rgba_t> color_team_red{ "zk.style.player-list.team.red", "ce1015" }; static settings::RVariable<rgba_t> color_team_red{ "zk.style.player-list.team.red", "d10e25" };
static settings::RVariable<rgba_t> color_team_red_dead{ "zk.style.player-list.team.red-dead", "660000" }; static settings::RVariable<rgba_t> color_team_red_dead{ "zk.style.player-list.team.red-dead", "660000" };
static settings::RVariable<rgba_t> color_team_blue{ "zk.style.player-list.team.blue", "0000ff" }; static settings::RVariable<rgba_t> color_team_blue{ "zk.style.player-list.team.blue", "0000ff" };
static settings::RVariable<rgba_t> color_team_blue_dead{ "zk.style.player-list.team.blue-dead", "000066" }; static settings::RVariable<rgba_t> color_team_blue_dead{ "zk.style.player-list.team.blue-dead", "6f6fce" };
static settings::RVariable<rgba_t> color_team_other{ "zk.style.player-list.team.other", "E6E6E6" }; static settings::RVariable<rgba_t> color_team_other{ "zk.style.player-list.team.other", "E6E6E6" };
static settings::RVariable<rgba_t> color_team_other_dead{ "zk.style.player-list.team.other-dead", "E6E6E6" }; static settings::RVariable<rgba_t> color_team_other_dead{ "zk.style.player-list.team.other-dead", "E6E6E6" };