summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game.cpp4
-rw-r--r--src/gui/setup.cpp104
-rw-r--r--src/gui/setup.h5
3 files changed, 96 insertions, 17 deletions
diff --git a/src/game.cpp b/src/game.cpp
index 2279cb5f..7e3e1bd2 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -363,10 +363,10 @@ void do_input()
{
helpWindow->setVisible(false);
}
- // Close the config window, applying changes if opened
+ // Close the config window, cancelling changes if opened
else if (setupWindow->isVisible())
{
- setupWindow->action("apply");
+ setupWindow->action("cancel");
}
// Else, open the chat edit box
else
diff --git a/src/gui/setup.cpp b/src/gui/setup.cpp
index 91f64ecc..ad38bae3 100644
--- a/src/gui/setup.cpp
+++ b/src/gui/setup.cpp
@@ -163,13 +163,31 @@ Setup::Setup():
// Load default settings
modeList->setSelected(-1);
+
+ // Full Screen
+ fullScreenEnabled = config.getValue("screen", 0);
+ fsCheckBox->setMarked(fullScreenEnabled);
+
+ // Sound
+ soundEnabled = config.getValue("sound", 0);
+ soundCheckBox->setMarked(soundEnabled);
+
+ sfxVolume = (int)config.getValue("sfxVolume", 100);
+ sfxSlider->setValue(sfxVolume);
+
+ musicVolume = (int)config.getValue("musicVolume", 60);
+ musicSlider->setValue(musicVolume);
+
+ // Graphics
+ customCursorEnabled = config.getValue("customcursor", 1);
+ customCursorCheckBox->setMarked(customCursorEnabled);
+
+ opacity = config.getValue("guialpha", 0.8);
+ alphaSlider->setValue(opacity);
+
+ openGlEnabled = config.getValue("openGL", 0);
+ openGlCheckBox->setMarked(openGlEnabled);
- fsCheckBox->setMarked(config.getValue("screen", 0));
- soundCheckBox->setMarked(config.getValue("sound", 0));
- customCursorCheckBox->setMarked(config.getValue("customcursor", 1));
- alphaSlider->setValue(config.getValue("guialpha", 0.8));
- sfxSlider->setValue(config.getValue("sfxVolume", 100));
- musicSlider->setValue(config.getValue("musicVolume", 60));
}
Setup::~Setup()
@@ -178,6 +196,7 @@ Setup::~Setup()
delete modeList;
delete scrollArea;
delete fsCheckBox;
+ delete openGlCheckBox;
delete soundCheckBox;
delete audioLabel;
delete applyButton;
@@ -214,12 +233,16 @@ void Setup::action(const std::string &eventId)
else if (eventId == "apply")
{
setVisible(false);
- bool fullscreen = fsCheckBox->isMarked();
- if (fullscreen != (config.getValue("screen", 0) == 1)) {
- if (!guiGraphics->setFullscreen(fullscreen)) {
+ // Full screen changes
+ bool fullscreen = fsCheckBox->isMarked();
+ if (fullscreen != (config.getValue("screen", 0) == 1))
+ {
+ if (!guiGraphics->setFullscreen(fullscreen))
+ {
fullscreen = !fullscreen;
- if (!guiGraphics->setFullscreen(fullscreen)) {
+ if (!guiGraphics->setFullscreen(fullscreen))
+ {
std::cerr << "Failed to switch to " <<
(fullscreen ? "windowed" : "fullscreen") <<
"mode and restoration of old mode also failed!" <<
@@ -230,21 +253,72 @@ void Setup::action(const std::string &eventId)
config.setValue("screen", fullscreen ? 1 : 0);
}
- // Sound settings
- if (soundCheckBox->isMarked()) {
+ // Sound settings changes
+ if (soundCheckBox->isMarked())
+ {
config.setValue("sound", 1);
try {
sound.init();
}
- catch (const char *err) {
+ catch (const char *err)
+ {
new OkDialog(this, "Sound Engine", err);
logger->log("Warning: %s", err);
}
- } else {
+ }
+ else
+ {
config.setValue("sound", 0);
sound.close();
}
- } else if (eventId == "cancel") {
+
+ //TODO: OpenGL changes at apply time
+
+
+ // We sync old and new values at apply time
+ // Screen
+ fullScreenEnabled = config.getValue("screen", 0);
+
+ // Sound
+ soundEnabled = config.getValue("sound", 0);
+ sfxVolume = (int)config.getValue("sfxVolume", 100);
+ musicVolume = (int)config.getValue("musicVolume", 60);
+
+ // Graphics
+ customCursorEnabled = config.getValue("customcursor", 1);
+ opacity = config.getValue("guialpha", 0.8);
+ openGlEnabled = config.getValue("openGL", 0);
+
+ }
+ else if (eventId == "cancel")
+ {
setVisible(false);
+
+ // Restoring old values when cancelling
+ // Screen
+ config.setValue("screen", fullScreenEnabled ? 1 : 0);
+ fsCheckBox->setMarked(fullScreenEnabled);
+
+ // Sound
+ config.getValue("sound", soundEnabled ? 1 : 0);
+ soundCheckBox->setMarked(soundEnabled);
+
+ config.getValue("sfxVolume", sfxVolume ? 1 : 0);
+ sound.setSfxVolume(sfxVolume);
+ sfxSlider->setValue(sfxVolume);
+
+ config.setValue("musicVolume", musicVolume);
+ sound.setMusicVolume(musicVolume);
+ musicSlider->setValue(musicVolume);
+
+ // Graphics
+ config.setValue("customcursor", customCursorEnabled ? 1 : 0);
+ customCursorCheckBox->setMarked(customCursorEnabled);
+
+ config.setValue("guialpha", opacity);
+ alphaSlider->setValue(opacity);
+
+ config.setValue("openGL", openGlEnabled ? 1 : 0);
+ openGlCheckBox->setMarked(openGlEnabled);
}
}
diff --git a/src/gui/setup.h b/src/gui/setup.h
index 02eebae1..70491957 100644
--- a/src/gui/setup.h
+++ b/src/gui/setup.h
@@ -83,6 +83,11 @@ class Setup : public Window, public gcn::ActionListener
gcn::Button *applyButton;
gcn::Button *cancelButton;
+ // Variables that keeps old settings until the user "apply" them...
+ int musicVolume, sfxVolume;
+ double opacity;
+ bool fullScreenEnabled, openGlEnabled, customCursorEnabled, soundEnabled;
+
public:
/**
* Constructor.