1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-25 01:57:47 +01:00

#267 allow to override .ini path via env var

This commit is contained in:
FunkyFr3sh 2023-12-08 00:51:16 +01:00
parent c08ccb61c4
commit 3ab1f7ff11
4 changed files with 50 additions and 22 deletions

View File

@ -43,7 +43,12 @@ void __fastcall TConfigForm::CreateParams(TCreateParams & Params)
void __fastcall TConfigForm::LanguageImgClick(TObject *Sender) void __fastcall TConfigForm::LanguageImgClick(TObject *Sender)
{ {
auto *ini = new TIniFile(GAME_PATH + "ddraw.ini"); auto iniPath = System::Sysutils::GetEnvironmentVariable(
"CNC_DDRAW_CONFIG_FILE");
auto *ini =
new TIniFile(iniPath.Length() ? iniPath : GAME_PATH + "ddraw.ini");
ini->WriteString("ddraw", "configlang", IsEnglish ? "auto" : "english"); ini->WriteString("ddraw", "configlang", IsEnglish ? "auto" : "english");
delete ini; delete ini;
@ -60,7 +65,12 @@ void __fastcall TConfigForm::LanguageImgClick(TObject *Sender)
void __fastcall TConfigForm::ThemePnlClick(TObject *Sender) void __fastcall TConfigForm::ThemePnlClick(TObject *Sender)
{ {
auto *ini = new TIniFile(GAME_PATH + "ddraw.ini"); auto iniPath = System::Sysutils::GetEnvironmentVariable(
"CNC_DDRAW_CONFIG_FILE");
auto *ini =
new TIniFile(iniPath.Length() ? iniPath : 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";
@ -89,7 +99,10 @@ void __fastcall TConfigForm::RestoreDefaultsBtnClick(TObject *Sender)
return; return;
} }
DeleteFile(GAME_PATH + "ddraw.ini"); auto iniPath = System::Sysutils::GetEnvironmentVariable(
"CNC_DDRAW_CONFIG_FILE");
DeleteFile(iniPath.Length() ? iniPath : GAME_PATH + "ddraw.ini");
ShellExecute( ShellExecute(
NULL, NULL,
@ -671,8 +684,12 @@ void __fastcall TConfigForm::CompatibilityBtnClick(TObject *Sender)
void __fastcall TConfigForm::FormCreate(TObject *Sender) void __fastcall TConfigForm::FormCreate(TObject *Sender)
{ {
auto iniPath = System::Sysutils::GetEnvironmentVariable(
"CNC_DDRAW_CONFIG_FILE");
/* 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(GAME_PATH + "ddraw.dll") && !FileExists(GAME_PATH + "ddraw.ini")) { if (FileExists(GAME_PATH + "ddraw.dll") &&
!FileExists(iniPath.Length() ? iniPath : GAME_PATH + "ddraw.ini")) {
SetEnvironmentVariableW(L"cnc_ddraw_config_init", L"1"); SetEnvironmentVariableW(L"cnc_ddraw_config_init", L"1");
@ -696,7 +713,8 @@ void __fastcall TConfigForm::FormCreate(TObject *Sender)
} }
} }
auto *ini = new TIniFile(GAME_PATH + "ddraw.ini"); auto *ini =
new TIniFile(iniPath.Length() ? iniPath : GAME_PATH + "ddraw.ini");
if (ini->ReadString("ddraw", "configtheme", "Windows10") == "Cobalt XEMedia") { if (ini->ReadString("ddraw", "configtheme", "Windows10") == "Cobalt XEMedia") {
@ -905,7 +923,7 @@ void __fastcall TConfigForm::FormCreate(TObject *Sender)
RestoreDefaultsBtn->Visible = RestoreDefaultsBtn->Visible =
FileExists(GAME_PATH + "ddraw.dll") && FileExists(GAME_PATH + "ddraw.dll") &&
FileExists(GAME_PATH + "ddraw.ini") && FileExists(iniPath.Length() ? iniPath : GAME_PATH + "ddraw.ini") &&
GetBool(ini, "allow_reset", true); GetBool(ini, "allow_reset", true);
delete ini; delete ini;
@ -918,7 +936,11 @@ void TConfigForm::SaveSettings()
if (!Initialized) if (!Initialized)
return; return;
auto *ini = new TIniFile(GAME_PATH + "ddraw.ini"); auto iniPath = System::Sysutils::GetEnvironmentVariable(
"CNC_DDRAW_CONFIG_FILE");
auto *ini =
new TIniFile(iniPath.Length() ? iniPath : GAME_PATH + "ddraw.ini");
/* Display Settings */ /* Display Settings */

View File

@ -35,7 +35,12 @@ int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
return 0; return 0;
} }
auto *ini = new TIniFile(GAME_PATH + "ddraw.ini"); auto iniPath = System::Sysutils::GetEnvironmentVariable(
"CNC_DDRAW_CONFIG_FILE");
auto *ini =
new TIniFile(iniPath.Length() ? iniPath : GAME_PATH + "ddraw.ini");
auto theme = ini->ReadString("ddraw", "configtheme", "Windows10"); auto theme = ini->ReadString("ddraw", "configtheme", "Windows10");
TStyleManager::TrySetStyle( TStyleManager::TrySetStyle(

View File

@ -7,7 +7,7 @@
#define VERSION_MAJOR 6 #define VERSION_MAJOR 6
#define VERSION_MINOR 0 #define VERSION_MINOR 0
#define VERSION_BUILD 0 #define VERSION_BUILD 0
#define VERSION_REVISION 4 #define VERSION_REVISION 5
#define VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_BUILD, VERSION_REVISION #define VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_BUILD, VERSION_REVISION
#define VERSION_STRING ver_str(VERSION_MAJOR, VERSION_MINOR, VERSION_BUILD, VERSION_REVISION) #define VERSION_STRING ver_str(VERSION_MAJOR, VERSION_MINOR, VERSION_BUILD, VERSION_REVISION)

View File

@ -1090,26 +1090,27 @@ static void cfg_init()
} }
} }
/* set up settings ini */ if (!GetEnvironmentVariableA("CNC_DDRAW_CONFIG_FILE", g_config.ini_path, sizeof(g_config.ini_path) - 1))
if (strlen(g_config.game_path) > 0)
{ {
_snprintf(g_config.ini_path, sizeof(g_config.ini_path) - 1, "%sddraw.ini", g_config.game_path); if (strlen(g_config.game_path) > 0)
if (GetFileAttributes(g_config.ini_path) == INVALID_FILE_ATTRIBUTES)
{ {
cfg_create_ini(); _snprintf(g_config.ini_path, sizeof(g_config.ini_path) - 1, "%sddraw.ini", g_config.game_path);
}
if (GetFileAttributes(g_config.ini_path) == INVALID_FILE_ATTRIBUTES) if (GetFileAttributes(g_config.ini_path) == INVALID_FILE_ATTRIBUTES)
{
cfg_create_ini();
}
if (GetFileAttributes(g_config.ini_path) == INVALID_FILE_ATTRIBUTES)
{
strncpy(g_config.ini_path, ".\\ddraw.ini", sizeof(g_config.ini_path) - 1);
}
}
else
{ {
strncpy(g_config.ini_path, ".\\ddraw.ini", sizeof(g_config.ini_path) - 1); strncpy(g_config.ini_path, ".\\ddraw.ini", sizeof(g_config.ini_path) - 1);
} }
} }
else
{
strncpy(g_config.ini_path, ".\\ddraw.ini", sizeof(g_config.ini_path) - 1);
}
if (GetFileAttributes(g_config.ini_path) == INVALID_FILE_ATTRIBUTES) if (GetFileAttributes(g_config.ini_path) == INVALID_FILE_ATTRIBUTES)
{ {