1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-14 22:03:27 +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)
{
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");
delete ini;
@ -60,7 +65,12 @@ void __fastcall TConfigForm::LanguageImgClick(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 =
ThemePnl->Color == (TColor)RGB(31, 31, 31) ? "Cobalt XEMedia" : "Windows10";
@ -89,7 +99,10 @@ void __fastcall TConfigForm::RestoreDefaultsBtnClick(TObject *Sender)
return;
}
DeleteFile(GAME_PATH + "ddraw.ini");
auto iniPath = System::Sysutils::GetEnvironmentVariable(
"CNC_DDRAW_CONFIG_FILE");
DeleteFile(iniPath.Length() ? iniPath : GAME_PATH + "ddraw.ini");
ShellExecute(
NULL,
@ -671,8 +684,12 @@ void __fastcall TConfigForm::CompatibilityBtnClick(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 */
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");
@ -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") {
@ -905,7 +923,7 @@ void __fastcall TConfigForm::FormCreate(TObject *Sender)
RestoreDefaultsBtn->Visible =
FileExists(GAME_PATH + "ddraw.dll") &&
FileExists(GAME_PATH + "ddraw.ini") &&
FileExists(iniPath.Length() ? iniPath : GAME_PATH + "ddraw.ini") &&
GetBool(ini, "allow_reset", true);
delete ini;
@ -918,7 +936,11 @@ void TConfigForm::SaveSettings()
if (!Initialized)
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 */

View File

@ -35,7 +35,12 @@ int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
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");
TStyleManager::TrySetStyle(

View File

@ -7,7 +7,7 @@
#define VERSION_MAJOR 6
#define VERSION_MINOR 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_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 (strlen(g_config.game_path) > 0)
if (!GetEnvironmentVariableA("CNC_DDRAW_CONFIG_FILE", g_config.ini_path, sizeof(g_config.ini_path) - 1))
{
_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 (strlen(g_config.game_path) > 0)
{
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);
}
}
else
{
strncpy(g_config.ini_path, ".\\ddraw.ini", sizeof(g_config.ini_path) - 1);
}
if (GetFileAttributes(g_config.ini_path) == INVALID_FILE_ATTRIBUTES)
{