[Scummvm-cvs-logs] CVS: scummvm/sword2 anims.cpp,1.36,1.37 controls.cpp,1.37,1.38 controls.h,1.7,1.8 function.cpp,1.30,1.31 speech.cpp,1.35,1.36
Torbj?rn Andersson
eriktorbjorn at users.sourceforge.net
Tue Oct 28 23:54:24 CET 2003
Update of /cvsroot/scummvm/scummvm/sword2
In directory sc8-pr-cvs1:/tmp/cvs-serv13468
Modified Files:
anims.cpp controls.cpp controls.h function.cpp speech.cpp
Log Message:
Use the ScummVM config manager instead of a separate BS2-specific config
file, plus some other cleanup. I don't know how the config manager decides
if/when to save the settings to file, but we can worry about that later.
Index: anims.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword2/anims.cpp,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -d -r1.36 -r1.37
--- anims.cpp 28 Oct 2003 19:51:26 -0000 1.36
+++ anims.cpp 29 Oct 2003 07:53:05 -0000 1.37
@@ -29,7 +29,7 @@
#include "sword2/driver/d_draw.h"
#include "sword2/anims.h"
#include "sword2/console.h"
-#include "sword2/controls.h" // for 'speechSelected' & 'subtitles'
+#include "sword2/controls.h" // for 'subtitles'
#include "sword2/defs.h"
#include "sword2/header.h"
#include "sword2/interpreter.h"
@@ -540,7 +540,7 @@
sequence_text_list[line].speech_mem = NULL;
sequenceText[line]->speech = NULL;
- if (gui._speechSelected) {
+ if (!g_sound->isSpeechMute()) {
// speech is selected, so try that first
// set up path to speech cluster
Index: controls.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword2/controls.cpp,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -d -r1.37 -r1.38
--- controls.cpp 28 Oct 2003 19:51:27 -0000 1.37
+++ controls.cpp 29 Oct 2003 07:53:05 -0000 1.38
@@ -18,6 +18,7 @@
*/
#include "stdafx.h"
+#include "common/config-manager.h"
#include "sword2/driver/driver96.h"
#include "sword2/build_display.h"
#include "sword2/console.h"
@@ -717,8 +718,6 @@
Button *_okButton;
Button *_cancelButton;
- void writeOptionSettings(void);
-
public:
OptionsDialog() {
_fr = new FontRendererGui(g_sword2->_controlsFontId);
@@ -781,9 +780,9 @@
_objectLabelsSwitch->setValue(gui._pointerTextSelected != 0);
_subtitlesSwitch->setValue(gui._subtitles != 0);
_reverseStereoSwitch->setValue(gui._stereoReversed != 0);
- _musicSwitch->setValue(g_sound->isMusicMute() == 0);
- _speechSwitch->setValue(g_sound->isSpeechMute() == 0);
- _fxSwitch->setValue(g_sound->isFxMute() == 0);
+ _musicSwitch->setValue(!g_sound->isMusicMute());
+ _speechSwitch->setValue(!g_sound->isSpeechMute());
+ _fxSwitch->setValue(!g_sound->isFxMute());
_musicSlider->setValue(g_sound->getMusicVolume());
_speechSlider->setValue(g_sound->getSpeechVolume());
_fxSlider->setValue(g_sound->getFxVolume());
@@ -862,9 +861,9 @@
gui.updateGraphicsLevel(result);
} else if (widget == _okButton) {
// Apply the changes
- g_sound->muteMusic(_musicSwitch->getValue() == 0);
- g_sound->muteSpeech(_speechSwitch->getValue() == 0);
- g_sound->muteFx(_fxSwitch->getValue() == 0);
+ g_sound->muteMusic(!_musicSwitch->getValue());
+ g_sound->muteSpeech(!_speechSwitch->getValue());
+ g_sound->muteFx(!_fxSwitch->getValue());
g_sound->setMusicVolume(_musicSlider->getValue());
g_sound->setSpeechVolume(_speechSlider->getValue());
g_sound->setFxVolume(_fxSlider->getValue());
@@ -873,10 +872,9 @@
gui._subtitles = _subtitlesSwitch->getValue();
gui._pointerTextSelected = _objectLabelsSwitch->getValue();
- gui._speechSelected = _speechSwitch->getValue();
gui._stereoReversed = _reverseStereoSwitch->getValue();
- writeOptionSettings();
+ gui.writeOptionSettings();
setResult(1);
} else if (widget == _cancelButton) {
// Revert the changes
@@ -886,34 +884,6 @@
}
};
-void OptionsDialog::writeOptionSettings(void) {
- uint8 buff[10];
- char filename[256];
- SaveFile *fp;
- SaveFileManager *mgr = g_system->get_savefile_manager();
-
- sprintf(filename, "%s-settings.dat", g_sword2->_targetName);
-
- buff[0] = g_sound->getMusicVolume();
- buff[1] = g_sound->getSpeechVolume();
- buff[2] = g_sound->getFxVolume();
- buff[3] = g_sound->isMusicMute();
- buff[4] = g_sound->isSpeechMute();
- buff[5] = g_sound->isFxMute();
- buff[6] = g_display->getRenderLevel();
- buff[7] = gui._subtitles;
- buff[8] = gui._pointerTextSelected;
- buff[9] = gui._stereoReversed;
-
- fp = mgr->open_savefile(filename, g_sword2->getSavePath(), true);
-
- if (fp)
- fp->write(buff, 10);
-
- delete fp;
- delete mgr;
-}
-
enum {
kSaveDialog,
kLoadDialog
@@ -1367,6 +1337,66 @@
RemoveMsg();
}
+Gui::Gui() : _baseSlot(0) {
+ int i;
+
+ for (i = 0; i < ARRAYSIZE(_musicVolume); i++) {
+ _musicVolume[i] = (i * 255) / (ARRAYSIZE(_musicVolume) - 1);
+ if ((i * 255) % (ARRAYSIZE(_musicVolume) - 1))
+ _musicVolume[i]++;
+ }
+
+ for (i = 0; i < ARRAYSIZE(_soundVolume); i++) {
+ _soundVolume[i] = (i * 255) / (ARRAYSIZE(_soundVolume) - 1);
+ if ((i * 255) % (ARRAYSIZE(_soundVolume) - 1))
+ _soundVolume[i]++;
+ }
+
+ ConfMan.registerDefault("music_volume", _musicVolume[12]);
+ ConfMan.registerDefault("speech_volume", _soundVolume[10]);
+ ConfMan.registerDefault("sfx_volume", _soundVolume[10]);
+ ConfMan.registerDefault("music_mute", false);
+ ConfMan.registerDefault("speech_mute", false);
+ ConfMan.registerDefault("sfx_mute", false);
+ ConfMan.registerDefault("gfx_details", 2);
+ ConfMan.registerDefault("nosubtitles", false);
+ ConfMan.registerDefault("object_labels", true);
+ ConfMan.registerDefault("reverse_stereo", false);
+}
+
+void Gui::readOptionSettings(void) {
+ bool newStereoReversed;
+
+ g_sound->setMusicVolume((16 * ConfMan.getInt("music_volume")) / 255);
+ g_sound->setSpeechVolume((14 * ConfMan.getInt("speech_volume")) / 255);
+ g_sound->setFxVolume((14 * ConfMan.getInt("sfx_volume")) / 255);
+ g_sound->muteMusic(ConfMan.getBool("music_mute"));
+ g_sound->muteSpeech(ConfMan.getBool("speech_mute"));
+ g_sound->muteFx(ConfMan.getBool("sfx_mute"));
+ updateGraphicsLevel((uint8) ConfMan.getInt("gfx_details"));
+ _subtitles = !ConfMan.getBool("nosubtitles");
+ _pointerTextSelected = ConfMan.getBool("object_labels");
+ newStereoReversed = ConfMan.getBool("reverse_stereo");
+
+ if (_stereoReversed != newStereoReversed)
+ g_sound->reverseStereo();
+
+ _stereoReversed = newStereoReversed;
+}
+
+void Gui::writeOptionSettings(void) {
+ ConfMan.set("music_volume", _musicVolume[g_sound->getMusicVolume()]);
+ ConfMan.set("speech_volume", _soundVolume[g_sound->getSpeechVolume()]);
+ ConfMan.set("sfx_volume", _soundVolume[g_sound->getFxVolume()]);
+ ConfMan.set("music_mute", g_sound->isMusicMute());
+ ConfMan.set("speech_mute", g_sound->isSpeechMute());
+ ConfMan.set("sfx_mute", g_sound->isFxMute());
+ ConfMan.set("gfx_details", g_display->getRenderLevel());
+ ConfMan.set("nosubtitles", !gui._subtitles);
+ ConfMan.set("object_labels", gui._pointerTextSelected);
+ ConfMan.set("reverse_stereo", gui._stereoReversed);
+}
+
uint32 Gui::restoreControl(void) {
// returns 0 for no restore
// 1 for restored ok
@@ -1459,52 +1489,6 @@
this_screen.new_palette = 99;
}
-void Gui::readOptionSettings(void) {
- // settings file is 9 bytes long:
- // 1 music volume
- // 2 speech volume
- // 3 fx volume
- // 4 music mute
- // 5 speech mute
- // 6 fx mute
- // 7 graphics level
- // 8 subtitles
- // 9 object labels
-
- uint8 buff[10];
- uint8 default_settings[10] = { 14, 12, 12, 0, 0, 0, 2, 1, 1 };
- char filename[256];
- SaveFile *fp;
- SaveFileManager *mgr = g_system->get_savefile_manager();
-
- sprintf(filename, "%s-settings.dat", g_sword2->_targetName);
-
- fp = mgr->open_savefile(filename, g_sword2->getSavePath(), false);
- if (!fp || fp->read(buff, 10) != 10)
- memcpy(buff, default_settings, sizeof(buff));
-
- delete fp;
- delete mgr;
-
- g_sound->setMusicVolume(buff[0]);
- g_sound->setSpeechVolume(buff[1]);
- g_sound->setFxVolume(buff[2]);
- g_sound->muteMusic(buff[3]);
- g_sound->muteSpeech(buff[4]);
- g_sound->muteFx(buff[5]);
-
- updateGraphicsLevel(buff[6]);
-
- _speechSelected = !buff[4];
- _subtitles = buff[7];
- _pointerTextSelected = buff[8];
-
- if (buff[9] != _stereoReversed)
- g_sound->reverseStereo();
-
- gui._stereoReversed = buff[9];
-}
-
void Gui::optionControl(void) {
OptionsDialog optionsDialog;
@@ -1512,7 +1496,12 @@
return;
}
-void Gui::updateGraphicsLevel(uint8 newLevel) {
+void Gui::updateGraphicsLevel(int newLevel) {
+ if (newLevel < 0)
+ newLevel = 0;
+ else if (newLevel > 3)
+ newLevel = 3;
+
g_display->setRenderLevel(newLevel);
// update our global variable - which needs to be checked when dimming
Index: controls.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword2/controls.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- controls.h 28 Oct 2003 13:46:28 -0000 1.7
+++ controls.h 29 Oct 2003 07:53:05 -0000 1.8
@@ -23,17 +23,19 @@
namespace Sword2 {
class Gui {
+private:
+ int _musicVolume[17];
+ int _soundVolume[15];
+
public:
int _baseSlot;
uint8 _currentGraphicsLevel;
- uint8 _subtitles;
- uint8 _speechSelected;
- uint8 _stereoReversed;
- uint8 _pointerTextSelected;
+ bool _subtitles;
+ bool _stereoReversed;
+ bool _pointerTextSelected;
- Gui() : _baseSlot(0), _stereoReversed(0),
- _pointerTextSelected(0) {}
+ Gui();
uint32 restoreControl(void);
void saveControl(void);
@@ -41,7 +43,8 @@
void restartControl(void);
void optionControl(void);
void readOptionSettings(void);
- void updateGraphicsLevel(uint8 newLevel);
+ void writeOptionSettings(void);
+ void updateGraphicsLevel(int newLevel);
};
extern Gui gui;
Index: function.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword2/function.cpp,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- function.cpp 28 Oct 2003 19:51:27 -0000 1.30
+++ function.cpp 29 Oct 2003 07:53:05 -0000 1.31
@@ -392,8 +392,8 @@
g_sound->saveMusicState();
- g_sound->muteFx(1);
- g_sound->muteSpeech(1);
+ g_sound->muteFx(true);
+ g_sound->muteSpeech(true);
g_sound->stopMusic();
memcpy(oldPal, g_display->_palCopy, 1024);
@@ -448,8 +448,8 @@
Build_display();
g_display->waitForFade();
- g_sound->muteFx(0);
- g_sound->muteSpeech(0);
+ g_sound->muteFx(false);
+ g_sound->muteSpeech(false);
}
// FIXME: This probably isn't the correct way of shutting down ScummVM
Index: speech.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword2/speech.cpp,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -d -r1.35 -r1.36
--- speech.cpp 28 Oct 2003 19:51:30 -0000 1.35
+++ speech.cpp 29 Oct 2003 07:53:05 -0000 1.36
@@ -1122,7 +1122,7 @@
// if speech is selected, and this line is allowed speech
// (not if it's an fx subtitle!)
- if (gui._speechSelected && WantSpeechForLine(officialTextNumber)) {
+ if (!g_sound->isSpeechMute() && WantSpeechForLine(officialTextNumber)) {
// if the wavId paramter is zero because not yet
// compiled into speech command, we can still get it
// from the 1st 2 chars of the text line
More information about the Scummvm-git-logs
mailing list