diff --git a/Cronos The New Dawn/dllmain.cpp b/Cronos The New Dawn/dllmain.cpp index c116f6a..2f80e15 100644 --- a/Cronos The New Dawn/dllmain.cpp +++ b/Cronos The New Dawn/dllmain.cpp @@ -15,6 +15,7 @@ static float aspectRatio = (float)screenWidth / screenHeight; // Core game dll functions declarations typedef void (*SetBoolFn)(bool, bool); typedef void (*SetIntFn)(int); +typedef void (*SetFloatFn)(float); typedef float (*GetFloatFn)(); typedef bool (*GetBoolFn)(); typedef void (*SetUEConsole)(); @@ -28,7 +29,9 @@ static SetBoolFn SetAspectRatioFixEnabled = nullptr; static SetBoolFn SetDOFFixEnabled = nullptr; static SetBoolFn SetVignettingFixEnabled = nullptr; static SetBoolFn SetFogFixEnabled = nullptr; +static SetBoolFn SetCameraDistanceFixEnabled = nullptr; static SetIntFn SetFOV = nullptr; +static SetFloatFn SetCameraDistance = nullptr; static GetFloatFn GetFOVIn = nullptr; static GetFloatFn GetCompensadedFOV = nullptr; static GetFloatFn GetFOVOut = nullptr; @@ -43,8 +46,10 @@ static bool Aspect_fix_enabled = false; static bool DOF_fix_enabled = false; static bool Vignetting_fix_enabled = false; static bool Fog_fix_enabled = false; +static bool camera_Distance_fix_enabled = false; static bool fix_enabled = false; static int worldFOVvalue = 0; +static float cameraDistancevalue = 0.f; static bool popup_Informations = false; @@ -56,9 +61,11 @@ const char* ASPECT_FIX_SETTING = "AspectFIX="; const char* DOF_FIX_SETTING = "DOFFIX="; const char* VIGNETTING_FIX_SETTING = "VignettingFIX="; const char* FOG_FIX_SETTING = "FogFIX="; +const char* CAMERA_DISTANCE_FIX_SETTING = "CameraDistanceFIX="; const char* WORLD_FOV_SETTING = "WorldFOV="; -const char* FIX_VERSION = "1.0.3"; -const char* FIX_INFORMATIONS = "This fix allows to:\n - Control FOV in game.\n - Unlock ultrawide resolutions.\n - Remove depth of field.\n - Remove vignetting.\n - Remove fog.\n - Re enable console."; +const char* CAMERA_DISTANCE_SETTING = "CameraDistance="; +const char* FIX_VERSION = "1.0.4"; +const char* FIX_INFORMATIONS = "This fix allows to:\n - Control FOV in game.\n - Control camera distance.\n - Unlock ultrawide resolutions.\n - Remove depth of field.\n - Remove vignetting.\n - Remove fog.\n - Re enable console."; const char* DONATION_URL = "https://buymeacoffee.com/k4sh44"; bool IsAlreadyInitialized() @@ -103,7 +110,9 @@ static void LoadFixDLL() SetDOFFixEnabled = (SetBoolFn)GetProcAddress(fixLib, "SetDOFFixEnabled"); SetVignettingFixEnabled = (SetBoolFn)GetProcAddress(fixLib, "SetVignettingFixEnabled"); SetFogFixEnabled = (SetBoolFn)GetProcAddress(fixLib, "SetFogFixEnabled"); + SetCameraDistanceFixEnabled = (SetBoolFn)GetProcAddress(fixLib, "SetCameraDistanceFixEnabled"); SetFOV = (SetIntFn)GetProcAddress(fixLib, "SetFOV"); + SetCameraDistance = (SetFloatFn)GetProcAddress(fixLib, "SetCameraDistance"); GetFOVIn = (GetFloatFn)GetProcAddress(fixLib, "GetFOVIn"); GetCompensadedFOV = (GetFloatFn)GetProcAddress(fixLib, "GetCompensatedFOV"); GetFOVOut = (GetFloatFn)GetProcAddress(fixLib, "GetFOVOut"); @@ -112,11 +121,13 @@ static void LoadFixDLL() // Apply initial values loaded from settings if (SetFOV) SetFOV(worldFOVvalue); + if (SetCameraDistance) SetCameraDistance(cameraDistancevalue); if (SetFOVFixEnabled) SetFOVFixEnabled(fov_fix_enabled, true); if (SetAspectRatioFixEnabled) SetAspectRatioFixEnabled(Aspect_fix_enabled, true); if (SetDOFFixEnabled) SetDOFFixEnabled(DOF_fix_enabled, true); if (SetVignettingFixEnabled) SetVignettingFixEnabled(Vignetting_fix_enabled, true); if (SetFogFixEnabled) SetFogFixEnabled(Fog_fix_enabled, true); + if (SetCameraDistanceFixEnabled) SetCameraDistanceFixEnabled(camera_Distance_fix_enabled, true); if (SetFixEnabled) SetFixEnabled(fix_enabled, true); if (SetConsole) SetConsole(); } @@ -134,7 +145,9 @@ static void SaveSettings() file << DOF_FIX_SETTING << (DOF_fix_enabled ? "1" : "0") << "\n"; file << VIGNETTING_FIX_SETTING << (Vignetting_fix_enabled ? "1" : "0") << "\n"; file << FOG_FIX_SETTING << (Fog_fix_enabled ? "1" : "0") << "\n"; + file << CAMERA_DISTANCE_FIX_SETTING << (camera_Distance_fix_enabled ? "1" : "0") << "\n"; file << WORLD_FOV_SETTING << worldFOVvalue << "\n"; + file << CAMERA_DISTANCE_SETTING << cameraDistancevalue << "\n"; file.close(); } } @@ -177,9 +190,15 @@ static void LoadSettings() std::string val = line.substr(strlen(FOG_FIX_SETTING)); Fog_fix_enabled = (val == "1" || val == "true"); } + else if (line.find(CAMERA_DISTANCE_FIX_SETTING) == 0) + { + std::string val = line.substr(strlen(CAMERA_DISTANCE_FIX_SETTING)); + camera_Distance_fix_enabled = (val == "1" || val == "true"); + } else if (line.find(WORLD_FOV_SETTING) == 0) worldFOVvalue = std::stoi(line.substr(strlen(WORLD_FOV_SETTING))); - + else if (line.find(CAMERA_DISTANCE_SETTING) == 0) + cameraDistancevalue = std::stoi(line.substr(strlen(CAMERA_DISTANCE_SETTING))); } file.close(); } @@ -245,6 +264,20 @@ static void on_overlay_draw(reshade::api::effect_runtime* runtime) } ImGui::EndChild(); + // Camera distance adjustment + ImGui::SetCursorPos(ImVec2(10, 180)); + ImGui::BeginChild("CameraHeader", ImVec2(220, 0), false); + if (ImGui::CollapsingHeader("Camera distance multiplier", ImGuiTreeNodeFlags_DefaultOpen)) { + ImGui::SetCursorPos(ImVec2(5, 30)); + ImGui::SetNextItemWidth(150.0f); + if (ImGui::SliderFloat("", &cameraDistancevalue, 0, 3)) {} + if (ImGui::IsItemDeactivatedAfterEdit()) { + if (SetCameraDistance) SetCameraDistance(cameraDistancevalue); + SaveSettings(); + } + } + ImGui::EndChild(); + // Individual fixes ImGui::SetCursorPos(ImVec2(240, 60)); ImGui::BeginChild("IndividualFixesHeader", ImVec2(250, 0), false); @@ -255,6 +288,12 @@ static void on_overlay_draw(reshade::api::effect_runtime* runtime) SaveSettings(); } + ImGui::SetCursorPos(ImVec2(60, 30)); + if (ImGui::Checkbox("Camera distance", &camera_Distance_fix_enabled)) { + if (SetCameraDistanceFixEnabled) SetCameraDistanceFixEnabled(camera_Distance_fix_enabled, false); + SaveSettings(); + } + ImGui::SetCursorPos(ImVec2(5, 55)); if (ImGui::Checkbox("Aspect ratio", &Aspect_fix_enabled)) { if (SetAspectRatioFixEnabled) SetAspectRatioFixEnabled(Aspect_fix_enabled, false);