diff --git a/The Callisto Protocol/dllmain.cpp b/The Callisto Protocol/dllmain.cpp index e1c9cb7..9fcc7b9 100644 --- a/The Callisto Protocol/dllmain.cpp +++ b/The Callisto Protocol/dllmain.cpp @@ -1,15 +1,9 @@ #define IMGUI_DISABLE_INCLUDE_IMCONFIG_H #define IMGUI_HAS_DOCK 1 -#include "ImGuiWidgets.h" -#include "GameInformations.h" -#include "GameFixes.h" +#include "CommonHeaders.h" #include "HotkeysManager.h" #include "OSDManager.h" -#include "inicpp.h" -#include -#include -#include #include #include @@ -53,6 +47,7 @@ static bool Fog_fix_enabled = false; static bool Time_Dilation_fix_enabled = false; static bool GodMode_fix_enabled = false; static bool Ignore_hits_fix_enabled = false; +static bool Stealth_fix_enabled = false; static bool fix_enabled = false; static bool console = true; static int worldFOVValue = 0; @@ -77,11 +72,12 @@ static reshade::api::effect_uniform_variable u_GodMode_show = {}; static reshade::api::effect_uniform_variable u_GodMode_enabled = {}; static reshade::api::effect_uniform_variable u_Invulnerability_show = {}; static reshade::api::effect_uniform_variable u_Invulnerability_enabled = {}; -constexpr auto OSD_SHADER_NAME = "OSD.fx"; +static reshade::api::effect_uniform_variable u_Stealth_show = {}; +static reshade::api::effect_uniform_variable u_Stealth_enabled = {}; // Plugin settings const std::string SETTINGS_FILE = "./pluginsettings.ini"; -const char* FIX_VERSION = "0.9.6"; +const char* FIX_VERSION = "0.9.7"; const char* FIX_INFORMATIONS = "This fix allows to:\n - Control FOV in game.\n - Control camera distance.\n - Control HUD scaling.\n - Enable cheats.\n - Disable chromatic aberrations.\n - Disable vignetting.\n - Disable fog.\n - Re enable dev console."; const char* DONATION_URL = "https://buymeacoffee.com/k4sh44"; @@ -138,6 +134,7 @@ static void LoadFixDLL() SetFixes(GameFixes::TimeDilation, Time_Dilation_fix_enabled); SetFixes(GameFixes::GodMode, GodMode_fix_enabled); SetFixes(GameFixes::Invulnerable, Ignore_hits_fix_enabled); + SetFixes(GameFixes::Stealth, Stealth_fix_enabled); SetFixes(GameFixes::DevConsole, console); } @@ -175,6 +172,7 @@ static void SaveSettings() { pluginIniFile["2#Individual fix"]["Time dilation"] = Time_Dilation_fix_enabled; pluginIniFile["2#Individual fix"]["God Mode"] = GodMode_fix_enabled; pluginIniFile["2#Individual fix"]["Ignore hits"] = Ignore_hits_fix_enabled; + pluginIniFile["2#Individual fix"]["Stealth"] = Stealth_fix_enabled; pluginIniFile["3#Fixes tuning"].setComment("Individual fix fine tune"); pluginIniFile["3#Fixes tuning"]["World FOV"] = worldFOVValue; pluginIniFile["3#Fixes tuning"]["HUD scale"] = HUDScaleValue; @@ -202,6 +200,7 @@ static void LoadSettings() { Time_Dilation_fix_enabled = pluginIniFile["2#Individual fix"]["Time dilation"].as(); GodMode_fix_enabled = pluginIniFile["2#Individual fix"]["God Mode"].as(); Ignore_hits_fix_enabled = pluginIniFile["2#Individual fix"]["Ignore hits"].as(); + Stealth_fix_enabled = pluginIniFile["2#Individual fix"]["Stealth"].as(); worldFOVValue = pluginIniFile["3#Fixes tuning"]["World FOV"].as(); HUDScaleValue = pluginIniFile["3#Fixes tuning"]["HUD scale"].as(); cameraOffsetValue = pluginIniFile["3#Fixes tuning"]["Camera offset"].as(); @@ -238,9 +237,10 @@ static FixToggle individualFixes[] = { }; static FixToggle cheatFixes[] = { - { "Time dilation", &Time_Dilation_fix_enabled, GameFixes::TimeDilation, "ALT + F1 to toggle" }, - { "God mode", &GodMode_fix_enabled, GameFixes::GodMode, "ALT + F2 to toggle.\nJacob won't receive any damage." }, - { "Ignore hits", &Ignore_hits_fix_enabled, GameFixes::Invulnerable, "ALT + F3 to toggle.\nJacob can't be hit." } + { "Time dilation", &Time_Dilation_fix_enabled, GameFixes::TimeDilation, "ALT + F5 to toggle" }, + { "God mode", &GodMode_fix_enabled, GameFixes::GodMode, "ALT + F6 to toggle.\nJacob won't receive any damage." }, + { "Ignore hits", &Ignore_hits_fix_enabled, GameFixes::Invulnerable, "ALT + F7 to toggle.\nJacob can't be hit." }, + { "Stealth mode",&Stealth_fix_enabled, GameFixes::Stealth, "ALT + F8 to toggle.\nEnemies won't attack you" } }; // Initialize ImGui widgets for Reshade @@ -377,14 +377,16 @@ static void on_reshade_present(reshade::api::effect_runtime* runtime) { static void on_reshade_begin_effects(reshade::api::effect_runtime* runtime, reshade::api::command_list* cmd_list, reshade::api::resource_view rtv, reshade::api::resource_view rtv_srgb) { if (!runtime) return; - u_td_show = runtime->find_uniform_variable(nullptr, "OSD_ShowTD"); - u_td_enabled = runtime->find_uniform_variable(nullptr, "TD_Enabled"); - u_td_world = runtime->find_uniform_variable(nullptr, "TD_World"); - u_td_AI = runtime->find_uniform_variable(nullptr, "TD_AI"); - u_GodMode_show = runtime->find_uniform_variable(nullptr, "OSD_ShowGodMode"); - u_GodMode_enabled = runtime->find_uniform_variable(nullptr, "GodMode_Enabled"); - u_Invulnerability_show = runtime->find_uniform_variable(nullptr, "OSD_ShowInvuln"); - u_Invulnerability_enabled = runtime->find_uniform_variable(nullptr, "Invulnerability_Enabled"); + u_td_show = runtime->find_uniform_variable(OSD_SHADER_NAME, "OSD_ShowTD"); + u_td_enabled = runtime->find_uniform_variable(OSD_SHADER_NAME, "TD_Enabled"); + u_td_world = runtime->find_uniform_variable(OSD_SHADER_NAME, "TD_World"); + u_td_AI = runtime->find_uniform_variable(OSD_SHADER_NAME, "TD_AI"); + u_GodMode_show = runtime->find_uniform_variable(OSD_SHADER_NAME, "OSD_ShowGodMode"); + u_GodMode_enabled = runtime->find_uniform_variable(OSD_SHADER_NAME, "GodMode_Enabled"); + u_Invulnerability_show = runtime->find_uniform_variable(OSD_SHADER_NAME, "OSD_ShowInvuln"); + u_Invulnerability_enabled = runtime->find_uniform_variable(OSD_SHADER_NAME, "Invulnerability_Enabled"); + u_Stealth_show = runtime->find_uniform_variable(OSD_SHADER_NAME, "OSD_ShowStealth"); + u_Stealth_enabled = runtime->find_uniform_variable(OSD_SHADER_NAME, "Stealth_Enabled"); if (InterlockedCompareExchange(&g_uniformReseted, 1, 0) != 0) return; // reset OSD uniforms once @@ -392,51 +394,25 @@ static void on_reshade_begin_effects(reshade::api::effect_runtime* runtime, resh runtime->save_current_preset(); // Save shader preset } -static void InitializeHotkeys() { +static void InitializeHotkeys() { // Initialize hotkeys for cheats if (InterlockedCompareExchange(&g_hotkeysInitialized, 1, 0) != 0) return; // Initialize hotkeys once - RegisterHotkey(VK_F1, Modifier::Alt, [] { - Time_Dilation_fix_enabled = !Time_Dilation_fix_enabled; - SetFixesEnabled(GameFixes::TimeDilation, Time_Dilation_fix_enabled); - SaveSettings(); + RegisterHotkey('1', Modifier::Alt, [] { + ToggleOSD(Time_Dilation_fix_enabled, GameFixes::TimeDilation, + u_td_show, u_td_enabled, OSD_duration, + { {u_td_world, worldTimeDilationValue}, {u_td_AI, AITimeDilationValue} }); + }); - ShowOSD(OSD_duration, - [](reshade::api::effect_runtime* rt) { - ResetAllUniformVariables(rt, OSD_SHADER_NAME); - rt->set_uniform_value_bool(u_td_show, true); - rt->set_uniform_value_bool(u_td_enabled, Time_Dilation_fix_enabled); - rt->set_uniform_value_float(u_td_world, worldTimeDilationValue); - rt->set_uniform_value_float(u_td_AI, AITimeDilationValue); - }, - [](reshade::api::effect_runtime* rt) { rt->set_uniform_value_bool(u_td_show, false); }); + RegisterHotkey('2', Modifier::Alt, [] { + ToggleOSD(GodMode_fix_enabled, GameFixes::GodMode, u_GodMode_show, u_GodMode_enabled, OSD_duration); }); - RegisterHotkey(VK_F2, Modifier::Alt, [] { - GodMode_fix_enabled = !GodMode_fix_enabled; - SetFixesEnabled(GameFixes::GodMode, GodMode_fix_enabled); - SaveSettings(); - - ShowOSD(OSD_duration, - [](reshade::api::effect_runtime* rt) { - ResetAllUniformVariables(rt, OSD_SHADER_NAME); - rt->set_uniform_value_bool(u_GodMode_show, true); - rt->set_uniform_value_bool(u_GodMode_enabled, GodMode_fix_enabled); - }, - [](reshade::api::effect_runtime* rt) { rt->set_uniform_value_bool(u_GodMode_show, false); }); + RegisterHotkey('3', Modifier::Alt, [] { + ToggleOSD(Ignore_hits_fix_enabled, GameFixes::Invulnerable, u_Invulnerability_show, u_Invulnerability_enabled, OSD_duration); }); - RegisterHotkey(VK_F3, Modifier::Alt, [] { - Ignore_hits_fix_enabled = !Ignore_hits_fix_enabled; - SetFixesEnabled(GameFixes::Invulnerable, Ignore_hits_fix_enabled); - SaveSettings(); - - ShowOSD(OSD_duration, - [](reshade::api::effect_runtime* rt) { - ResetAllUniformVariables(rt, OSD_SHADER_NAME); - rt->set_uniform_value_bool(u_Invulnerability_show, true); - rt->set_uniform_value_bool(u_Invulnerability_enabled, Ignore_hits_fix_enabled); - }, - [](reshade::api::effect_runtime* rt) { rt->set_uniform_value_bool(u_Invulnerability_show, false); }); + RegisterHotkey('4', Modifier::Alt, [] { + ToggleOSD(Stealth_fix_enabled, GameFixes::Stealth, u_Stealth_show, u_Stealth_enabled, OSD_duration); }); }