r5sdk/r5dev/include/gui_utility.h
IcePixelx 70b4c02a9a Read description for all changes.
* Added ability to register custom ConVar.
* Added 2 custom ConVars to open the CGameConsole and CCompanion Windows.
* Changed ResolveRelativeAddress.
* Added Config System for the Gui.
* Added ImGui::Hotkey.
* Added the ability to change 2 hotkeys for opening the window for CGameConsole and CCompanion.
* Changed pattern for Squirrel_CompilerError to use a String.
* Added IMemAlloc::AllocWrapper to patterns.h
2021-08-19 01:27:44 +02:00

75 lines
2.2 KiB
C++

#pragma once
/////////////////////////////////////////////////////////////////////////////
// Internals
int Stricmp(const char* s1, const char* s2);
int Strnicmp(const char* s1, const char* s2, int n);
char* Strdup(const char* s);
void Strtrim(char* s);
class GuiConfig
{
public:
struct
{
int bind1 = VK_OEM_3;
int bind2 = VK_INSERT;
} CGameConsoleConfig;
struct
{
int bind1 = VK_HOME;
int bind2 = VK_F10;
} CCompanionConfig;
void Load()
{
std::filesystem::path path = std::filesystem::current_path() /= "gui.config"; // Get current path + gui.config
nlohmann::json in;
std::ifstream config_file(path, std::ios::in); // Parse config file.
if (config_file.good() && config_file) // Check if it parsed.
{
config_file >> in;
config_file.close();
if (!in.is_null())
{
if (!in["config"].is_null())
{
// CGameConsole
CGameConsoleConfig.bind1 = in["config"]["CGameConsole"]["bind1"].get<int>();
CGameConsoleConfig.bind2 = in["config"]["CGameConsole"]["bind2"].get<int>();
// CCompanion
CCompanionConfig.bind1 = in["config"]["CCompanion"]["bind1"].get<int>();
CCompanionConfig.bind2 = in["config"]["CCompanion"]["bind2"].get<int>();
}
}
}
}
void Save()
{
nlohmann::json out;
// CGameConsole
out["config"]["CGameConsole"]["bind1"] = CGameConsoleConfig.bind1;
out["config"]["CGameConsole"]["bind2"] = CGameConsoleConfig.bind2;
// CCompanion
out["config"]["CCompanion"]["bind1"] = CCompanionConfig.bind1;
out["config"]["CCompanion"]["bind2"] = CCompanionConfig.bind2;
std::filesystem::path path = std::filesystem::current_path() /= "gui.config"; // Get current path + gui.config
std::ofstream out_file(path, std::ios::out | std::ios::trunc); // Write config file..
out_file << out.dump(4); // Dump it into config file..
out_file.close(); // Close the file handle.
};
};
extern GuiConfig g_GuiConfig;