From 51d9ef58d9582581ce466090b426990f67efc9d5 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Wed, 3 Apr 2024 00:37:24 +0200 Subject: [PATCH] always use full path to avoid issues with working directories in wine --- config/ConfigFormUnit.cpp | 26 ++++++++++++++------------ config/cnc-ddraw config.cpp | 6 +++++- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/config/ConfigFormUnit.cpp b/config/ConfigFormUnit.cpp index 6a00eb9..790336a 100644 --- a/config/ConfigFormUnit.cpp +++ b/config/ConfigFormUnit.cpp @@ -23,6 +23,8 @@ int Savesettings; int Resolutions; int Minfps; +#define GAME_PATH (TPath::GetDirectoryName(Application->ExeName) + "\\") + //--------------------------------------------------------------------------- __fastcall TConfigForm::TConfigForm(TComponent* Owner) : TForm(Owner) @@ -40,7 +42,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; @@ -57,7 +59,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"; @@ -86,7 +88,7 @@ void __fastcall TConfigForm::RestoreDefaultsBtnClick(TObject *Sender) return; } - auto *ini = new TIniFile(".\\Warcraft II BNE.ini"); + auto *ini = new TIniFile(GAME_PATH + "Warcraft II BNE.ini"); ini->WriteString("Game", "Resolution", "4"); ini->WriteString("Game", "Width", "0"); @@ -94,7 +96,7 @@ void __fastcall TConfigForm::RestoreDefaultsBtnClick(TObject *Sender) delete ini; - DeleteFile(".\\ddraw.ini"); + DeleteFile(GAME_PATH + "ddraw.ini"); ShellExecute( NULL, @@ -685,11 +687,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) { @@ -709,8 +711,8 @@ void __fastcall TConfigForm::FormCreate(TObject *Sender) } } - auto *ini = new TIniFile(".\\ddraw.ini"); - auto *hd_ini = new TIniFile(".\\Warcraft II BNE.ini"); + auto *ini = new TIniFile(GAME_PATH + "ddraw.ini"); + auto *hd_ini = new TIniFile(GAME_PATH + "Warcraft II BNE.ini"); if (ini->ReadString("ddraw", "configtheme", "Windows10") == "Cobalt XEMedia") { @@ -913,8 +915,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; @@ -928,8 +930,8 @@ void TConfigForm::SaveSettings() if (!Initialized) return; - auto *ini = new TIniFile(".\\ddraw.ini"); - auto *hd_ini = new TIniFile(".\\Warcraft II BNE.ini"); + auto *ini = new TIniFile(GAME_PATH + "ddraw.ini"); + auto *hd_ini = new TIniFile(GAME_PATH + "Warcraft II BNE.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(