save and load settings from ddraw.ini
This commit is contained in:
parent
b119d3fd9d
commit
81b4408833
3 changed files with 443 additions and 181 deletions
|
@ -3,11 +3,15 @@
|
|||
#include <vcl.h>
|
||||
#pragma hdrstop
|
||||
|
||||
#include <IniFiles.hpp>
|
||||
#include <StrUtils.hpp>
|
||||
#include <IOUtils.hpp>
|
||||
#include "ConfigFormUnit.h"
|
||||
//---------------------------------------------------------------------------
|
||||
#pragma package(smart_init)
|
||||
#pragma resource "*.dfm"
|
||||
TConfigForm *ConfigForm;
|
||||
bool Initialized;
|
||||
//---------------------------------------------------------------------------
|
||||
__fastcall TConfigForm::TConfigForm(TComponent* Owner)
|
||||
: TForm(Owner)
|
||||
|
@ -35,3 +39,241 @@ void __fastcall TConfigForm::CompatibilityBtnClick(TObject *Sender)
|
|||
DisplayPnl->Visible = false;
|
||||
}
|
||||
|
||||
void __fastcall TConfigForm::FormCreate(TObject *Sender)
|
||||
{
|
||||
auto *ini = new TIniFile(".\\ddraw.ini");
|
||||
|
||||
/* Display Settings */
|
||||
|
||||
auto s = LowerCase(ini->ReadString("ddraw", "windowed", "false"));
|
||||
bool windowed = s == "true" || s == "yes" || s == "1";
|
||||
|
||||
s = LowerCase(ini->ReadString("ddraw", "fullscreen", "false"));
|
||||
bool fullscreen = s == "true" || s == "yes" || s == "1";
|
||||
|
||||
s = LowerCase(ini->ReadString("ddraw", "nonexclusive", "false"));
|
||||
bool nonexclusive = s == "true" || s == "yes" || s == "1";
|
||||
|
||||
|
||||
if (windowed && fullscreen) {
|
||||
PresentationCbx->ItemIndex = 2;
|
||||
}
|
||||
else if (windowed) {
|
||||
PresentationCbx->ItemIndex = 3;
|
||||
}
|
||||
else if (nonexclusive) {
|
||||
PresentationCbx->ItemIndex = 1;
|
||||
}
|
||||
else {
|
||||
PresentationCbx->ItemIndex = 0;
|
||||
}
|
||||
|
||||
|
||||
s = LowerCase(ini->ReadString("ddraw", "maintas", "false"));
|
||||
MaintasChk->State = s == "true" || s == "yes" || s == "1" ? tssOn : tssOff;
|
||||
|
||||
s = LowerCase(ini->ReadString("ddraw", "vsync", "false"));
|
||||
VsyncChk->State = s == "true" || s == "yes" || s == "1" ? tssOn : tssOff;
|
||||
|
||||
s = LowerCase(ini->ReadString("ddraw", "adjmouse", "false"));
|
||||
AdjmouseChk->State = s == "true" || s == "yes" || s == "1" ? tssOn : tssOff;
|
||||
|
||||
s = LowerCase(ini->ReadString("ddraw", "devmode", "false"));
|
||||
DevmodeChk->State = s == "true" || s == "yes" || s == "1" ? tssOn : tssOff;
|
||||
|
||||
/* Advanced Display Settings */
|
||||
|
||||
auto renderer = LowerCase(ini->ReadString("ddraw", "renderer", "auto"));
|
||||
|
||||
if (StartsStr("d", renderer)) {
|
||||
RendererCbx->ItemIndex = 1;
|
||||
}
|
||||
else if (StartsStr("o", renderer)) {
|
||||
RendererCbx->ItemIndex = 2;
|
||||
}
|
||||
else if (StartsStr("s", renderer) || StartsStr("g", renderer)) {
|
||||
RendererCbx->ItemIndex = 3;
|
||||
}
|
||||
else {
|
||||
RendererCbx->ItemIndex = 0;
|
||||
}
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
TStringDynArray list = TDirectory::GetFiles(
|
||||
"Shaders",
|
||||
"*.glsl",
|
||||
TSearchOption::soAllDirectories);
|
||||
|
||||
for (int i = 0; i < list.Length; i++)
|
||||
ShaderCbx->AddItem(list[i], NULL);
|
||||
|
||||
auto shader = ini->ReadString("ddraw", "shader", "");
|
||||
ShaderCbx->ItemIndex = ShaderCbx->Items->IndexOf(shader);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
int maxfps = ini->ReadInteger("ddraw", "maxfps", -1);
|
||||
MaxfpsChk->State = maxfps != 0 ? tssOn : tssOff;
|
||||
|
||||
s = LowerCase(ini->ReadString("ddraw", "boxing", "false"));
|
||||
BoxingChk->State = s == "true" || s == "yes" || s == "1" ? tssOn : tssOff;
|
||||
|
||||
s = LowerCase(ini->ReadString("ddraw", "border", "false"));
|
||||
BorderChk->State = s == "true" || s == "yes" || s == "1" ? tssOn : tssOff;
|
||||
|
||||
int savesettings = ini->ReadInteger("ddraw", "savesettings", 1);
|
||||
SavesettingsChk->State = savesettings != 0 ? tssOn : tssOff;
|
||||
|
||||
delete ini;
|
||||
|
||||
Initialized = true;
|
||||
}
|
||||
|
||||
void TConfigForm::SaveSettings()
|
||||
{
|
||||
if (!Initialized)
|
||||
return;
|
||||
|
||||
auto *ini = new TIniFile(".\\ddraw.ini");
|
||||
|
||||
/* Display Settings */
|
||||
|
||||
switch(PresentationCbx->ItemIndex)
|
||||
{
|
||||
case 0:
|
||||
ini->WriteString("ddraw", "windowed", "false");
|
||||
ini->WriteString("ddraw", "fullscreen", "false");
|
||||
ini->WriteString("ddraw", "nonexclusive", "false");
|
||||
break;
|
||||
case 1:
|
||||
ini->WriteString("ddraw", "windowed", "false");
|
||||
ini->WriteString("ddraw", "fullscreen", "false");
|
||||
ini->WriteString("ddraw", "nonexclusive", "true");
|
||||
break;
|
||||
case 2:
|
||||
ini->WriteString("ddraw", "windowed", "true");
|
||||
ini->WriteString("ddraw", "fullscreen", "true");
|
||||
ini->WriteString("ddraw", "nonexclusive", "false");
|
||||
break;
|
||||
case 3:
|
||||
ini->WriteString("ddraw", "windowed", "true");
|
||||
ini->WriteString("ddraw", "fullscreen", "false");
|
||||
ini->WriteString("ddraw", "nonexclusive", "false");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
ini->WriteString(
|
||||
"ddraw",
|
||||
"renderer",
|
||||
LowerCase(RendererCbx->Text));
|
||||
|
||||
ini->WriteString(
|
||||
"ddraw",
|
||||
"maintas",
|
||||
MaintasChk->State == tssOn ? "true" : "false");
|
||||
|
||||
ini->WriteString(
|
||||
"ddraw",
|
||||
"vsync",
|
||||
VsyncChk->State == tssOn ? "true" : "false");
|
||||
|
||||
ini->WriteString(
|
||||
"ddraw",
|
||||
"adjmouse",
|
||||
AdjmouseChk->State == tssOn ? "true" : "false");
|
||||
|
||||
ini->WriteString(
|
||||
"ddraw",
|
||||
"devmode",
|
||||
DevmodeChk->State == tssOn ? "true" : "false");
|
||||
|
||||
/* Advanced Display Settings */
|
||||
|
||||
ini->WriteString("ddraw", "renderer", LowerCase(RendererCbx->Text));
|
||||
ini->WriteString("ddraw", "shader", ShaderCbx->Text);
|
||||
|
||||
ini->WriteInteger(
|
||||
"ddraw",
|
||||
"maxfps",
|
||||
MaxfpsChk->State == tssOn ? -1 : 0);
|
||||
|
||||
ini->WriteString(
|
||||
"ddraw",
|
||||
"boxing",
|
||||
BoxingChk->State == tssOn ? "true" : "false");
|
||||
|
||||
ini->WriteString(
|
||||
"ddraw",
|
||||
"border",
|
||||
BorderChk->State == tssOn ? "true" : "false");
|
||||
|
||||
ini->WriteInteger(
|
||||
"ddraw",
|
||||
"savesettings",
|
||||
SavesettingsChk->State == tssOn ? 1 : 0);
|
||||
|
||||
delete ini;
|
||||
}
|
||||
|
||||
void __fastcall TConfigForm::PresentationCbxChange(TObject *Sender)
|
||||
{
|
||||
SaveSettings();
|
||||
}
|
||||
|
||||
void __fastcall TConfigForm::MaintasChkClick(TObject *Sender)
|
||||
{
|
||||
SaveSettings();
|
||||
}
|
||||
|
||||
void __fastcall TConfigForm::VsyncChkClick(TObject *Sender)
|
||||
{
|
||||
SaveSettings();
|
||||
}
|
||||
|
||||
void __fastcall TConfigForm::AdjmouseChkClick(TObject *Sender)
|
||||
{
|
||||
SaveSettings();
|
||||
}
|
||||
|
||||
void __fastcall TConfigForm::DevmodeChkClick(TObject *Sender)
|
||||
{
|
||||
SaveSettings();
|
||||
}
|
||||
|
||||
void __fastcall TConfigForm::RendererCbxChange(TObject *Sender)
|
||||
{
|
||||
SaveSettings();
|
||||
}
|
||||
|
||||
void __fastcall TConfigForm::ShaderCbxChange(TObject *Sender)
|
||||
{
|
||||
SaveSettings();
|
||||
}
|
||||
|
||||
void __fastcall TConfigForm::MaxfpsChkClick(TObject *Sender)
|
||||
{
|
||||
SaveSettings();
|
||||
}
|
||||
|
||||
void __fastcall TConfigForm::BoxingChkClick(TObject *Sender)
|
||||
{
|
||||
SaveSettings();
|
||||
}
|
||||
|
||||
void __fastcall TConfigForm::BorderChkClick(TObject *Sender)
|
||||
{
|
||||
SaveSettings();
|
||||
}
|
||||
|
||||
void __fastcall TConfigForm::SavesettingsChkClick(TObject *Sender)
|
||||
{
|
||||
SaveSettings();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue