From 07d26d7bed687f45d0506462bf1acb7b39e72983 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Sun, 12 Nov 2023 23:58:10 +0100 Subject: [PATCH] always use full path to avoid issues with working directories in wine --- config/ConfigFormUnit.cpp | 20 +++++++++++--------- config/cnc-ddraw config.cpp | 6 +++++- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/config/ConfigFormUnit.cpp b/config/ConfigFormUnit.cpp index 5b51d7d..4dac099 100644 --- a/config/ConfigFormUnit.cpp +++ b/config/ConfigFormUnit.cpp @@ -24,6 +24,8 @@ int Savesettings; int Resolutions; int Minfps; +#define GAME_PATH (TPath::GetDirectoryName(Application->ExeName) + "\\") + //--------------------------------------------------------------------------- __fastcall TConfigForm::TConfigForm(TComponent* Owner) : TForm(Owner) @@ -41,7 +43,7 @@ void __fastcall TConfigForm::CreateParams(TCreateParams & Params) void __fastcall TConfigForm::LanguageImgClick(TObject *Sender) { - auto *ini = new TIniFile(".\\ddraw.ini"); + auto *ini = new TIniFile(GAME_PATH + "ddraw.ini"); ini->WriteString("ddraw", "configlang", IsEnglish ? "auto" : "english"); delete ini; @@ -58,7 +60,7 @@ void __fastcall TConfigForm::LanguageImgClick(TObject *Sender) void __fastcall TConfigForm::ThemePnlClick(TObject *Sender) { - auto *ini = new TIniFile(".\\ddraw.ini"); + auto *ini = new TIniFile(GAME_PATH + "ddraw.ini"); auto theme = ThemePnl->Color == (TColor)RGB(31, 31, 31) ? "Cobalt XEMedia" : "Windows10"; @@ -87,7 +89,7 @@ void __fastcall TConfigForm::RestoreDefaultsBtnClick(TObject *Sender) return; } - DeleteFile(".\\ddraw.ini"); + DeleteFile(GAME_PATH + "ddraw.ini"); ShellExecute( NULL, @@ -670,11 +672,11 @@ void __fastcall TConfigForm::CompatibilityBtnClick(TObject *Sender) void __fastcall TConfigForm::FormCreate(TObject *Sender) { /* Let cnc-ddraw create a new ddraw.ini if it doesn't exist */ - if (FileExists(".\\ddraw.dll") && !FileExists(".\\ddraw.ini")) { + if (FileExists(GAME_PATH + "ddraw.dll") && !FileExists(GAME_PATH + "ddraw.ini")) { SetEnvironmentVariableW(L"cnc_ddraw_config_init", L"1"); - HMODULE ddraw = LoadLibraryW(L".\\ddraw.dll"); + HMODULE ddraw = LoadLibraryW((GAME_PATH + "ddraw.dll").w_str()); if (ddraw) { @@ -694,7 +696,7 @@ void __fastcall TConfigForm::FormCreate(TObject *Sender) } } - auto *ini = new TIniFile(".\\ddraw.ini"); + auto *ini = new TIniFile(GAME_PATH + "ddraw.ini"); if (ini->ReadString("ddraw", "configtheme", "Windows10") == "Cobalt XEMedia") { @@ -902,8 +904,8 @@ void __fastcall TConfigForm::FormCreate(TObject *Sender) CompatibilityBtn->Visible = !GetBool(ini, "hide_compat_tab", false); RestoreDefaultsBtn->Visible = - FileExists(".\\ddraw.dll") && - FileExists(".\\ddraw.ini") && + FileExists(GAME_PATH + "ddraw.dll") && + FileExists(GAME_PATH + "ddraw.ini") && GetBool(ini, "allow_reset", true); delete ini; @@ -916,7 +918,7 @@ void TConfigForm::SaveSettings() if (!Initialized) return; - auto *ini = new TIniFile(".\\ddraw.ini"); + auto *ini = new TIniFile(GAME_PATH + "ddraw.ini"); /* Display Settings */ diff --git a/config/cnc-ddraw config.cpp b/config/cnc-ddraw config.cpp index 7cb64d5..0760b13 100644 --- a/config/cnc-ddraw config.cpp +++ b/config/cnc-ddraw config.cpp @@ -3,6 +3,7 @@ #include #pragma hdrstop #include +#include #include #include //--------------------------------------------------------------------------- @@ -10,6 +11,9 @@ #include USEFORM("ConfigFormUnit.cpp", ConfigForm); //--------------------------------------------------------------------------- + +#define GAME_PATH (TPath::GetDirectoryName(Application->ExeName) + "\\") + int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int) { try @@ -31,7 +35,7 @@ int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int) return 0; } - auto *ini = new TIniFile(".\\ddraw.ini"); + auto *ini = new TIniFile(GAME_PATH + "ddraw.ini"); auto theme = ini->ReadString("ddraw", "configtheme", "Windows10"); TStyleManager::TrySetStyle(