1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

always use full path to avoid issues with working directories in wine

This commit is contained in:
FunkyFr3sh 2024-04-03 00:37:24 +02:00
parent bf7a3d021a
commit 51d9ef58d9
2 changed files with 19 additions and 13 deletions

View File

@ -23,6 +23,8 @@ int Savesettings;
int Resolutions; int Resolutions;
int Minfps; int Minfps;
#define GAME_PATH (TPath::GetDirectoryName(Application->ExeName) + "\\")
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
__fastcall TConfigForm::TConfigForm(TComponent* Owner) __fastcall TConfigForm::TConfigForm(TComponent* Owner)
: TForm(Owner) : TForm(Owner)
@ -40,7 +42,7 @@ void __fastcall TConfigForm::CreateParams(TCreateParams & Params)
void __fastcall TConfigForm::LanguageImgClick(TObject *Sender) 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"); ini->WriteString("ddraw", "configlang", IsEnglish ? "auto" : "english");
delete ini; delete ini;
@ -57,7 +59,7 @@ void __fastcall TConfigForm::LanguageImgClick(TObject *Sender)
void __fastcall TConfigForm::ThemePnlClick(TObject *Sender) void __fastcall TConfigForm::ThemePnlClick(TObject *Sender)
{ {
auto *ini = new TIniFile(".\\ddraw.ini"); auto *ini = new TIniFile(GAME_PATH + "ddraw.ini");
auto theme = auto theme =
ThemePnl->Color == (TColor)RGB(31, 31, 31) ? "Cobalt XEMedia" : "Windows10"; ThemePnl->Color == (TColor)RGB(31, 31, 31) ? "Cobalt XEMedia" : "Windows10";
@ -86,7 +88,7 @@ void __fastcall TConfigForm::RestoreDefaultsBtnClick(TObject *Sender)
return; 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", "Resolution", "4");
ini->WriteString("Game", "Width", "0"); ini->WriteString("Game", "Width", "0");
@ -94,7 +96,7 @@ void __fastcall TConfigForm::RestoreDefaultsBtnClick(TObject *Sender)
delete ini; delete ini;
DeleteFile(".\\ddraw.ini"); DeleteFile(GAME_PATH + "ddraw.ini");
ShellExecute( ShellExecute(
NULL, NULL,
@ -685,11 +687,11 @@ void __fastcall TConfigForm::CompatibilityBtnClick(TObject *Sender)
void __fastcall TConfigForm::FormCreate(TObject *Sender) void __fastcall TConfigForm::FormCreate(TObject *Sender)
{ {
/* Let cnc-ddraw create a new ddraw.ini if it doesn't exist */ /* 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"); 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) { if (ddraw) {
@ -709,8 +711,8 @@ void __fastcall TConfigForm::FormCreate(TObject *Sender)
} }
} }
auto *ini = new TIniFile(".\\ddraw.ini"); auto *ini = new TIniFile(GAME_PATH + "ddraw.ini");
auto *hd_ini = new TIniFile(".\\Warcraft II BNE.ini"); auto *hd_ini = new TIniFile(GAME_PATH + "Warcraft II BNE.ini");
if (ini->ReadString("ddraw", "configtheme", "Windows10") == "Cobalt XEMedia") { 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); CompatibilityBtn->Visible = !GetBool(ini, "hide_compat_tab", false);
RestoreDefaultsBtn->Visible = RestoreDefaultsBtn->Visible =
FileExists(".\\ddraw.dll") && FileExists(GAME_PATH + "ddraw.dll") &&
FileExists(".\\ddraw.ini") && FileExists(GAME_PATH + "ddraw.ini") &&
GetBool(ini, "allow_reset", true); GetBool(ini, "allow_reset", true);
delete ini; delete ini;
@ -928,8 +930,8 @@ void TConfigForm::SaveSettings()
if (!Initialized) if (!Initialized)
return; return;
auto *ini = new TIniFile(".\\ddraw.ini"); auto *ini = new TIniFile(GAME_PATH + "ddraw.ini");
auto *hd_ini = new TIniFile(".\\Warcraft II BNE.ini"); auto *hd_ini = new TIniFile(GAME_PATH + "Warcraft II BNE.ini");
/* Display Settings */ /* Display Settings */

View File

@ -3,6 +3,7 @@
#include <vcl.h> #include <vcl.h>
#pragma hdrstop #pragma hdrstop
#include <IniFiles.hpp> #include <IniFiles.hpp>
#include <IOUtils.hpp>
#include <System.Hash.hpp> #include <System.Hash.hpp>
#include <tchar.h> #include <tchar.h>
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
@ -10,6 +11,9 @@
#include <Vcl.Themes.hpp> #include <Vcl.Themes.hpp>
USEFORM("ConfigFormUnit.cpp", ConfigForm); USEFORM("ConfigFormUnit.cpp", ConfigForm);
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
#define GAME_PATH (TPath::GetDirectoryName(Application->ExeName) + "\\")
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int) int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{ {
try try
@ -31,7 +35,7 @@ int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
return 0; return 0;
} }
auto *ini = new TIniFile(".\\ddraw.ini"); auto *ini = new TIniFile(GAME_PATH + "ddraw.ini");
auto theme = ini->ReadString("ddraw", "configtheme", "Windows10"); auto theme = ini->ReadString("ddraw", "configtheme", "Windows10");
TStyleManager::TrySetStyle( TStyleManager::TrySetStyle(