Remake config tool, adding new settings and removing some obsolete ones (#333)

This commit is contained in:
VoxelTek 2025-06-19 11:24:15 +10:00 committed by GitHub
parent 6563cf2236
commit 6de10909ff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 628 additions and 281 deletions

View File

@ -14,4 +14,5 @@ CAboutDialog::CAboutDialog() : QDialog()
{
m_ui = new Ui::AboutDialog;
m_ui->setupUi(this);
layout()->setSizeConstraint(QLayout::SetFixedSize);
}

View File

@ -17,10 +17,6 @@
DECOMP_SIZE_ASSERT(CDialog, 0x60)
DECOMP_SIZE_ASSERT(CMainDialog, 0x70)
// FIXME: disable dialog resizing
// FIXME: advanced mode should resize dialog, ignoring advanced controls
// FIXME: list widget should have less rows
// FUNCTION: CONFIG 0x00403d50
CMainDialog::CMainDialog(QWidget* pParent) : QDialog(pParent)
{
@ -30,13 +26,12 @@ CMainDialog::CMainDialog(QWidget* pParent) : QDialog(pParent)
// Populate the dialog prior to connecting all signals
OnInitDialog();
connect(m_ui->colorPalette16bitRadioButton, &QRadioButton::toggled, this, &CMainDialog::OnRadiobuttonPalette16bit);
connect(m_ui->colorPalette256RadioButton, &QRadioButton::toggled, this, &CMainDialog::OnRadiobuttonPalette256);
connect(m_ui->modelQualityLowRadioButton, &QRadioButton::toggled, this, &CMainDialog::OnRadiobuttonModelLowQuality);
connect(
m_ui->modelQualityFastRadioButton,
m_ui->modelQualityMediumRadioButton,
&QRadioButton::toggled,
this,
&CMainDialog::OnRadiobuttonModelLowQuality
&CMainDialog::OnRadiobuttonModelMediumQuality
);
connect(
m_ui->modelQualityHighRadioButton,
@ -44,6 +39,7 @@ CMainDialog::CMainDialog(QWidget* pParent) : QDialog(pParent)
this,
&CMainDialog::OnRadiobuttonModelHighQuality
);
connect(
m_ui->textureQualityFastRadioButton,
&QRadioButton::toggled,
@ -58,18 +54,29 @@ CMainDialog::CMainDialog(QWidget* pParent) : QDialog(pParent)
);
connect(m_ui->devicesList, &QListWidget::currentRowChanged, this, &CMainDialog::OnList3DevicesSelectionChanged);
connect(m_ui->musicCheckBox, &QCheckBox::toggled, this, &CMainDialog::OnCheckboxMusic);
connect(m_ui->videomemoryCheckBox, &QCheckBox::toggled, this, &CMainDialog::OnCheckbox3DVideoMemory);
connect(m_ui->flipVideoMemoryPagesCheckBox, &QCheckBox::toggled, this, &CMainDialog::OnCheckboxFlipVideoMemPages);
connect(m_ui->sound3DCheckBox, &QCheckBox::toggled, this, &CMainDialog::OnCheckbox3DSound);
connect(m_ui->joystickCheckBox, &QCheckBox::toggled, this, &CMainDialog::OnCheckboxJoystick);
connect(m_ui->okButton, &QPushButton::clicked, this, &CMainDialog::accept);
connect(m_ui->cancelButton, &QPushButton::clicked, this, &CMainDialog::reject);
connect(m_ui->advancedButton, &QPushButton::clicked, this, &CMainDialog::OnButtonAdvanced);
connect(m_ui->diskPathOpen, &QPushButton::clicked, this, &CMainDialog::SelectDiskPathDialog);
connect(m_ui->cdPathOpen, &QPushButton::clicked, this, &CMainDialog::SelectCDPathDialog);
connect(m_ui->mediaPathOpen, &QPushButton::clicked, this, &CMainDialog::SelectMediaPathDialog);
connect(m_ui->savePathOpen, &QPushButton::clicked, this, &CMainDialog::SelectSavePathDialog);
connect(m_ui->diskPath, &QLineEdit::textEdited, this, &CMainDialog::DiskPathEdited);
connect(m_ui->cdPath, &QLineEdit::textEdited, this, &CMainDialog::CDPathEdited);
connect(m_ui->mediaPath, &QLineEdit::textEdited, this, &CMainDialog::MediaPathEdited);
connect(m_ui->savePath, &QLineEdit::textEdited, this, &CMainDialog::SavePathEdited);
connect(m_ui->maxLoDSlider, &QSlider::valueChanged, this, &CMainDialog::MaxLoDChanged);
connect(m_ui->maxActorsSlider, &QSlider::valueChanged, this, &CMainDialog::MaxActorsChanged);
layout()->setSizeConstraint(QLayout::SetFixedSize);
}
// FUNCTION: CONFIG 0x00403e80
bool CMainDialog::OnInitDialog()
{
SwitchToAdvanced(false);
LegoDeviceEnumerate* enumerator = currentConfigApp->m_device_enumerator;
enumerator->FUN_1009d210();
m_modified = currentConfigApp->ReadRegisterSettings();
@ -99,6 +106,9 @@ bool CMainDialog::OnInitDialog()
driver_i += 1;
}
m_ui->devicesList->setCurrentRow(selected);
m_ui->maxLoDSlider->setValue((int) currentConfigApp->m_max_lod * 10);
m_ui->maxActorsSlider->setValue(currentConfigApp->m_max_actors);
UpdateInterface();
return true;
}
@ -123,8 +133,6 @@ void CMainDialog::OnList3DevicesSelectionChanged(int selected)
if (currentConfigApp->GetHardwareDeviceColorModel() == D3DCOLOR_NONE) {
currentConfigApp->m_3d_video_ram = FALSE;
currentConfigApp->m_flip_surfaces = FALSE;
m_ui->videomemoryCheckBox->setChecked(currentConfigApp->m_3d_video_ram);
m_ui->flipVideoMemoryPagesCheckBox->setChecked(currentConfigApp->m_flip_surfaces);
}
m_modified = true;
UpdateInterface();
@ -148,32 +156,18 @@ void CMainDialog::accept()
void CMainDialog::UpdateInterface()
{
currentConfigApp->ValidateSettings();
m_ui->videomemoryCheckBox->setEnabled(
!currentConfigApp->m_flip_surfaces && currentConfigApp->GetHardwareDeviceColorModel() == D3DCOLOR_NONE
);
m_ui->flipVideoMemoryPagesCheckBox->setChecked(currentConfigApp->m_flip_surfaces);
m_ui->videomemoryCheckBox->setChecked(currentConfigApp->m_3d_video_ram);
bool full_screen = currentConfigApp->m_full_screen;
currentConfigApp->AdjustDisplayBitDepthBasedOnRenderStatus();
if (full_screen) {
if (currentConfigApp->m_display_bit_depth == 8) {
m_ui->colorPalette256RadioButton->setChecked(true);
}
else {
m_ui->colorPalette16bitRadioButton->setChecked(true);
}
}
else {
m_ui->colorPalette256RadioButton->setChecked(false);
m_ui->colorPalette256RadioButton->setChecked(false);
if (!full_screen) {
currentConfigApp->m_display_bit_depth = 0;
}
m_ui->colorPalette256RadioButton->setEnabled(full_screen && currentConfigApp->GetConditionalDeviceRenderBitDepth());
m_ui->colorPalette16bitRadioButton->setEnabled(full_screen && currentConfigApp->GetDeviceRenderBitStatus());
m_ui->sound3DCheckBox->setChecked(currentConfigApp->m_3d_sound);
switch (currentConfigApp->m_model_quality) {
case 0:
m_ui->modelQualityLowRadioButton->setChecked(true);
break;
case 1:
m_ui->modelQualityFastRadioButton->setChecked(true);
m_ui->modelQualityMediumRadioButton->setChecked(true);
break;
case 2:
m_ui->modelQualityHighRadioButton->setChecked(true);
@ -187,6 +181,10 @@ void CMainDialog::UpdateInterface()
}
m_ui->joystickCheckBox->setChecked(currentConfigApp->m_use_joystick);
m_ui->musicCheckBox->setChecked(currentConfigApp->m_music);
m_ui->diskPath->setText(QString::fromStdString(currentConfigApp->m_base_path));
m_ui->cdPath->setText(QString::fromStdString(currentConfigApp->m_cd_path));
m_ui->mediaPath->setText(QString::fromStdString(currentConfigApp->m_media_path));
m_ui->savePath->setText(QString::fromStdString(currentConfigApp->m_save_path));
}
// FUNCTION: CONFIG 0x004045e0
@ -197,48 +195,19 @@ void CMainDialog::OnCheckbox3DSound(bool checked)
UpdateInterface();
}
// FUNCTION: CONFIG 0x00404610
void CMainDialog::OnCheckbox3DVideoMemory(bool checked)
{
currentConfigApp->m_3d_video_ram = checked;
m_modified = true;
UpdateInterface();
}
// FUNCTION: CONFIG 0x00404640
void CMainDialog::OnRadiobuttonPalette16bit(bool checked)
{
if (checked) {
currentConfigApp->m_display_bit_depth = 16;
m_modified = true;
UpdateInterface();
}
}
// FUNCTION: CONFIG 0x00404670
void CMainDialog::OnRadiobuttonPalette256(bool checked)
{
if (checked) {
currentConfigApp->m_display_bit_depth = 8;
m_modified = true;
UpdateInterface();
}
}
// FUNCTION: CONFIG 0x004046a0
void CMainDialog::OnCheckboxFlipVideoMemPages(bool checked)
{
currentConfigApp->m_flip_surfaces = checked;
m_modified = true;
UpdateInterface();
}
// FUNCTION: CONFIG 0x004046d0
void CMainDialog::OnRadiobuttonModelLowQuality(bool checked)
{
if (checked) {
// FIXME: are OnRadiobuttonModelLowQuality and OnRadiobuttonModelHighQuality triggered both?
qInfo() << "OnRadiobuttonModelLowQuality";
currentConfigApp->m_model_quality = 0;
m_modified = true;
UpdateInterface();
}
}
void CMainDialog::OnRadiobuttonModelMediumQuality(bool checked)
{
if (checked) {
currentConfigApp->m_model_quality = 1;
m_modified = true;
UpdateInterface();
@ -249,7 +218,6 @@ void CMainDialog::OnRadiobuttonModelLowQuality(bool checked)
void CMainDialog::OnRadiobuttonModelHighQuality(bool checked)
{
if (checked) {
qInfo() << "OnRadiobuttonModelHighQuality";
currentConfigApp->m_model_quality = 2;
m_modified = true;
UpdateInterface();
@ -260,8 +228,6 @@ void CMainDialog::OnRadiobuttonModelHighQuality(bool checked)
void CMainDialog::OnRadiobuttonTextureLowQuality(bool checked)
{
if (checked) {
// FIXME: are OnRadiobuttonTextureLowQuality and OnRadiobuttonTextureHighQuality triggered both?
qInfo() << "OnRadiobuttonTextureLowQuality";
currentConfigApp->m_texture_quality = 0;
m_modified = true;
UpdateInterface();
@ -272,8 +238,6 @@ void CMainDialog::OnRadiobuttonTextureLowQuality(bool checked)
void CMainDialog::OnRadiobuttonTextureHighQuality(bool checked)
{
if (checked) {
// FIXME: are OnRadiobuttonTextureLowQuality and OnRadiobuttonTextureHighQuality triggered both?
qInfo() << "OnRadiobuttonTextureHighQuality";
currentConfigApp->m_texture_quality = 1;
m_modified = true;
UpdateInterface();
@ -288,20 +252,6 @@ void CMainDialog::OnCheckboxJoystick(bool checked)
UpdateInterface();
}
// FUNCTION: CONFIG 0x004047c0
void CMainDialog::OnButtonAdvanced()
{
SwitchToAdvanced(!m_advanced);
}
// FUNCTION: CONFIG 0x004047d0
void CMainDialog::SwitchToAdvanced(bool p_advanced)
{
m_ui->advancedGroup->setVisible(p_advanced);
layout()->setSizeConstraint(QLayout::SetMinAndMaxSize);
m_advanced = p_advanced;
}
// FUNCTION: CONFIG 0x004048c0
void CMainDialog::OnCheckboxMusic(bool checked)
{
@ -309,3 +259,110 @@ void CMainDialog::OnCheckboxMusic(bool checked)
m_modified = true;
UpdateInterface();
}
void CMainDialog::SelectDiskPathDialog()
{
QString disk_path = QString::fromStdString(currentConfigApp->m_base_path);
disk_path = QFileDialog::getExistingDirectory(
this,
tr("Open Directory"),
disk_path,
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks
);
if (disk_path.toStdString() != "") {
currentConfigApp->m_base_path = disk_path.toStdString();
m_modified = true;
UpdateInterface();
}
}
void CMainDialog::SelectCDPathDialog()
{
QString cd_path = QString::fromStdString(currentConfigApp->m_cd_path);
cd_path = QFileDialog::getExistingDirectory(
this,
tr("Open Directory"),
cd_path,
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks
);
if (cd_path.toStdString() != "") {
currentConfigApp->m_cd_path = cd_path.toStdString();
m_modified = true;
UpdateInterface();
}
}
void CMainDialog::SelectMediaPathDialog()
{
QString media_path = QString::fromStdString(currentConfigApp->m_media_path);
media_path = QFileDialog::getExistingDirectory(
this,
tr("Open Directory"),
media_path,
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks
);
if (media_path.toStdString() != "") {
currentConfigApp->m_media_path = media_path.toStdString();
m_modified = true;
UpdateInterface();
}
}
void CMainDialog::SelectSavePathDialog()
{
QString save_path = QString::fromStdString(currentConfigApp->m_save_path);
save_path = QFileDialog::getExistingDirectory(
this,
tr("Open Directory"),
save_path,
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks
);
if (save_path.toStdString() != "") {
currentConfigApp->m_save_path = save_path.toStdString();
m_modified = true;
UpdateInterface();
}
}
void CMainDialog::DiskPathEdited(const QString& text)
{
currentConfigApp->m_base_path = text.toStdString();
m_modified = true;
UpdateInterface();
}
void CMainDialog::CDPathEdited(const QString& text)
{
currentConfigApp->m_cd_path = text.toStdString();
m_modified = true;
UpdateInterface();
}
void CMainDialog::MediaPathEdited(const QString& text)
{
currentConfigApp->m_media_path = text.toStdString();
m_modified = true;
UpdateInterface();
}
void CMainDialog::SavePathEdited(const QString& text)
{
currentConfigApp->m_save_path = text.toStdString();
m_modified = true;
UpdateInterface();
}
void CMainDialog::MaxLoDChanged(int value)
{
currentConfigApp->m_max_lod = static_cast<float>(value) / 10.0f;
m_modified = true;
}
void CMainDialog::MaxActorsChanged(int value)
{
currentConfigApp->m_max_actors = value;
m_modified = true;
}

View File

@ -6,6 +6,7 @@
#include "res/resource.h"
#include <QDialog>
#include <QFileDialog>
namespace Ui
{
@ -22,7 +23,6 @@ public:
protected:
void UpdateInterface();
void SwitchToAdvanced(bool p_advanced);
private:
bool m_modified = false;
@ -34,19 +34,25 @@ private:
private slots:
void OnList3DevicesSelectionChanged(int row);
void OnCheckbox3DSound(bool checked);
void OnCheckbox3DVideoMemory(bool checked);
void OnRadiobuttonPalette16bit(bool checked);
void OnRadiobuttonPalette256(bool checked);
void OnCheckboxFlipVideoMemPages(bool checked);
void OnRadiobuttonModelLowQuality(bool checked);
void OnRadiobuttonModelMediumQuality(bool checked);
void OnRadiobuttonModelHighQuality(bool checked);
void OnRadiobuttonTextureLowQuality(bool checked);
void OnRadiobuttonTextureHighQuality(bool checked);
void OnCheckboxJoystick(bool chedked);
void OnCheckboxJoystick(bool checked);
void OnCheckboxMusic(bool checked);
void OnButtonAdvanced();
void accept() override;
void reject() override;
void SelectDiskPathDialog();
void SelectCDPathDialog();
void SelectMediaPathDialog();
void SelectSavePathDialog();
void DiskPathEdited(const QString& text);
void CDPathEdited(const QString& text);
void MediaPathEdited(const QString& text);
void SavePathEdited(const QString& text);
void MaxLoDChanged(int value);
void MaxActorsChanged(int value);
};
// SYNTHETIC: CONFIG 0x00403de0

View File

@ -63,7 +63,7 @@ bool CConfigApp::InitInstance()
m_device = NULL;
m_full_screen = TRUE;
m_wide_view_angle = TRUE;
m_use_joystick = FALSE;
m_use_joystick = TRUE;
m_music = TRUE;
m_flip_surfaces = FALSE;
m_3d_video_ram = FALSE;
@ -74,16 +74,22 @@ bool CConfigApp::InitInstance()
m_3d_sound = FALSE;
m_model_quality = 0;
m_texture_quality = 1;
m_max_lod = 1.5f;
m_max_actors = 5;
}
else if (totalRamMiB < 20) {
m_3d_sound = FALSE;
m_model_quality = 1;
m_texture_quality = 1;
m_max_lod = 2.5f;
m_max_actors = 10;
}
else {
m_model_quality = 2;
m_3d_sound = TRUE;
m_texture_quality = 1;
m_max_lod = 3.5f;
m_max_actors = 20;
}
return true;
}
@ -149,6 +155,8 @@ bool CConfigApp::ReadRegisterSettings()
m_use_joystick = iniparser_getboolean(dict, "isle:UseJoystick", m_use_joystick);
m_music = iniparser_getboolean(dict, "isle:Music", m_music);
m_joystick_index = iniparser_getint(dict, "isle:JoystickIndex", m_joystick_index);
m_max_lod = iniparser_getdouble(dict, "isle:Max LOD", m_max_lod);
m_max_actors = iniparser_getint(dict, "isle:Max Allowed Extras", m_max_actors);
return true;
}
@ -200,7 +208,7 @@ bool CConfigApp::ValidateSettings()
}
}
if ((m_display_bit_depth != 8 && m_display_bit_depth != 16) && (m_display_bit_depth != 0 || m_full_screen)) {
m_display_bit_depth = 8;
m_display_bit_depth = 16;
is_modified = TRUE;
}
if (m_model_quality < 0 || m_model_quality > 2) {
@ -211,6 +219,16 @@ bool CConfigApp::ValidateSettings()
m_texture_quality = 0;
is_modified = TRUE;
}
if (m_max_lod < 0.0f || m_max_lod > 5.0f) {
m_max_lod = 3.5f;
is_modified = TRUE;
}
if (m_max_actors < 5 || m_max_actors > 40) {
m_max_actors = 20;
is_modified = TRUE;
}
return is_modified;
}
@ -258,7 +276,7 @@ bool CConfigApp::AdjustDisplayBitDepthBasedOnRenderStatus()
m_display_bit_depth = 16;
return TRUE;
}
m_display_bit_depth = 8;
m_display_bit_depth = 16;
return TRUE;
}
@ -286,7 +304,7 @@ void CConfigApp::WriteRegisterSettings() const
iniparser_set(dict, "isle:mediapath", m_media_path.c_str());
iniparser_set(dict, "isle:savepath", m_save_path.c_str());
SetIniBool(dict, "isle:Display Bit Depth", m_display_bit_depth);
SetIniInt(dict, "isle:Display Bit Depth", m_display_bit_depth);
SetIniBool(dict, "isle:Flip Surfaces", m_flip_surfaces);
SetIniBool(dict, "isle:Full Screen", m_full_screen);
SetIniBool(dict, "isle:Wide View Angle", m_wide_view_angle);
@ -303,6 +321,9 @@ void CConfigApp::WriteRegisterSettings() const
SetIniInt(dict, "isle:Island Quality", m_model_quality);
SetIniInt(dict, "isle:Island Texture", m_texture_quality);
iniparser_set(dict, "isle:Max LOD", std::to_string(m_max_lod).c_str());
SetIniInt(dict, "isle:Max Allowed Extras", m_max_actors);
#undef SetIniBool
#undef SetIniInt

View File

@ -79,6 +79,8 @@ public:
std::string m_cd_path;
std::string m_media_path;
std::string m_save_path;
float m_max_lod;
int m_max_actors;
};
extern CConfigApp g_theApp;

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>549</width>
<height>563</height>
<width>575</width>
<height>650</height>
</rect>
</property>
<property name="sizePolicy">
@ -27,7 +27,7 @@
<item>
<widget class="QLabel" name="sharkImageLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -35,7 +35,13 @@
<property name="minimumSize">
<size>
<width>143</width>
<height>545</height>
<height>383</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="text">
@ -45,52 +51,304 @@
<pixmap resource="config.qrc">:/shark.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="settingsWidget" native="true">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWidget" name="normalWidget" native="true">
<widget class="QWidget" name="dataPaths" native="true">
<property name="minimumSize">
<size>
<width>0</width>
<height>41</height>
<height>0</height>
</size>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<item row="2" column="1">
<widget class="QLineEdit" name="cdPath"/>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="mediaPath"/>
</item>
<item row="7" column="2">
<widget class="QPushButton" name="savePathOpen">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>55</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Open</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QPushButton" name="mediaPathOpen">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>55</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Open</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QPushButton" name="cdPathOpen">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>55</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Open</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="cdPathLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>CD Path:</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="diskPath"/>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="diskPathOpen">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>55</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Open</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="diskPathLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Disk Path:</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="savePathLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Save Path:</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="mediaPathLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Media Path:</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QLineEdit" name="savePath"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="QualityOptionsHolder" native="true">
<property name="minimumSize">
<size>
<width>0</width>
<height>80</height>
</size>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<item row="0" column="3">
<widget class="QGroupBox" name="modelQualityGroup">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>120</height>
</size>
</property>
<property name="title">
<string>Island Model Quality</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QRadioButton" name="modelQualityLowRadioButton">
<property name="text">
<string>Low</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="modelQualityMediumRadioButton">
<property name="text">
<string>Medium</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="modelQualityHighRadioButton">
<property name="text">
<string>High</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="2">
<widget class="QGroupBox" name="maxLoDGroup">
<property name="minimumSize">
<size>
<width>0</width>
<height>70</height>
</size>
</property>
<property name="toolTip">
<string>Maximum Level of Detail (LOD). A higher setting will cause higher quality textures to be drawn regardless of distance.</string>
</property>
<property name="title">
<string>Maximum LOD</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QSlider" name="maxLoDSlider">
<property name="maximum">
<number>50</number>
</property>
<property name="singleStep">
<number>5</number>
</property>
<property name="pageStep">
<number>10</number>
</property>
<property name="value">
<number>35</number>
</property>
<property name="tracking">
<bool>false</bool>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="tickPosition">
<enum>QSlider::TicksBothSides</enum>
</property>
<property name="tickInterval">
<number>10</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="2">
<widget class="QGroupBox" name="textureQualityGroup">
<property name="title">
<string>Island Texture Quality</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<layout class="QVBoxLayout" name="verticalLayout_5">
<property name="topMargin">
<number>0</number>
</property>
@ -114,129 +372,46 @@
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="modelQualityGroup">
<property name="title">
<string>Island Model Quality</string>
<item row="1" column="3">
<widget class="QGroupBox" name="maxActorsGroup">
<property name="toolTip">
<string>Maximum number of LEGO actors to exist in the world at a time. The game will gradually increase the number of actors until this maximum is reached and while performance is acceptable.</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="topMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QRadioButton" name="modelQualityFastRadioButton">
<property name="text">
<string>Fast</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="modelQualityHighRadioButton">
<property name="text">
<string>High</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="colorPaletteGroup">
<property name="title">
<string>Color Palette</string>
<string>Maximum Actors (5..40)</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="topMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QRadioButton" name="colorPalette256RadioButton">
<property name="text">
<string>256 Color</string>
<widget class="QSlider" name="maxActorsSlider">
<property name="minimum">
<number>5</number>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="colorPalette16bitRadioButton">
<property name="text">
<string>High Color (16 bit)</string>
<property name="maximum">
<number>40</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="musicJoystickWidget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_5">
<property name="topMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QCheckBox" name="musicCheckBox">
<property name="text">
<string>Music</string>
<property name="singleStep">
<number>5</number>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="joystickCheckBox">
<property name="text">
<string>Use Joystick</string>
<property name="value">
<number>20</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="buttonWidgets" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_6">
<property name="spacing">
<number>30</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="advancedButton">
<property name="text">
<string>Advanced</string>
<property name="sliderPosition">
<number>20</number>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="okButton">
<property name="text">
<string>OK</string>
<property name="tracking">
<bool>false</bool>
</property>
<property name="default">
<bool>true</bool>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cancelButton">
<property name="text">
<string>Cancel</string>
<property name="tickPosition">
<enum>QSlider::TicksBothSides</enum>
</property>
<property name="tickInterval">
<number>5</number>
</property>
</widget>
</item>
@ -246,32 +421,83 @@
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="musicJoystickWidget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_5">
<property name="topMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QCheckBox" name="sound3DCheckBox">
<property name="text">
<string>3D Sound</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="musicCheckBox">
<property name="text">
<string>Music</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="joystickCheckBox">
<property name="text">
<string>Use Joystick</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="advancedGroup">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>225</height>
</size>
</property>
<property name="title">
<string>Advanced Settings</string>
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="flat">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>0</number>
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>0</number>
<number>6</number>
</property>
<item>
<widget class="QLabel" name="direct3DDevicesLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>25</height>
</size>
</property>
<property name="text">
<string>Direct 3D Devices</string>
</property>
@ -285,6 +511,18 @@
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>125</height>
</size>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
@ -296,43 +534,42 @@
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="buttonWidgets" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_6">
<property name="spacing">
<number>30</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWidget" name="D3DCheckboxWidget" native="true">
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item row="1" column="0">
<widget class="QCheckBox" name="flipVideoMemoryPagesCheckBox">
<property name="text">
<string>Flip Video Memory Pages</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="videomemoryCheckBox">
<property name="text">
<string>Draw 3D to Video Memory</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="sound3DCheckBox">
<property name="text">
<string>3D Sound</string>
</property>
</widget>
</item>
</layout>
<widget class="QPushButton" name="okButton">
<property name="text">
<string>OK</string>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cancelButton">
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
</layout>
@ -343,6 +580,29 @@
</item>
</layout>
</widget>
<tabstops>
<tabstop>diskPath</tabstop>
<tabstop>diskPathOpen</tabstop>
<tabstop>cdPath</tabstop>
<tabstop>cdPathOpen</tabstop>
<tabstop>mediaPath</tabstop>
<tabstop>mediaPathOpen</tabstop>
<tabstop>savePath</tabstop>
<tabstop>savePathOpen</tabstop>
<tabstop>textureQualityFastRadioButton</tabstop>
<tabstop>textureQualityHighRadioButton</tabstop>
<tabstop>modelQualityLowRadioButton</tabstop>
<tabstop>modelQualityMediumRadioButton</tabstop>
<tabstop>modelQualityHighRadioButton</tabstop>
<tabstop>maxLoDSlider</tabstop>
<tabstop>maxActorsSlider</tabstop>
<tabstop>sound3DCheckBox</tabstop>
<tabstop>musicCheckBox</tabstop>
<tabstop>joystickCheckBox</tabstop>
<tabstop>devicesList</tabstop>
<tabstop>okButton</tabstop>
<tabstop>cancelButton</tabstop>
</tabstops>
<resources>
<include location="config.qrc"/>
</resources>