aboutsummaryrefslogtreecommitdiff
path: root/engines/cge2
diff options
context:
space:
mode:
authoruruk2014-07-24 18:11:10 +0200
committeruruk2014-07-24 18:11:10 +0200
commit24cc8a8762ded511e8f69ee2790f38b913ddcae9 (patch)
tree2ce302ddaa9d5d421334310a3adda7c57fb98a3a /engines/cge2
parent755fedcceba70267ea41ea5fed5a4e021c05b0e7 (diff)
downloadscummvm-rg350-24cc8a8762ded511e8f69ee2790f38b913ddcae9.tar.gz
scummvm-rg350-24cc8a8762ded511e8f69ee2790f38b913ddcae9.tar.bz2
scummvm-rg350-24cc8a8762ded511e8f69ee2790f38b913ddcae9.zip
CGE2: Implement checkSaySwitch() and add/fix connected code.
Diffstat (limited to 'engines/cge2')
-rw-r--r--engines/cge2/cge2.cpp10
-rw-r--r--engines/cge2/cge2.h4
-rw-r--r--engines/cge2/saveload.cpp2
-rw-r--r--engines/cge2/toolbar.cpp31
4 files changed, 37 insertions, 10 deletions
diff --git a/engines/cge2/cge2.cpp b/engines/cge2/cge2.cpp
index 94b876c724..5a5e3451aa 100644
--- a/engines/cge2/cge2.cpp
+++ b/engines/cge2/cge2.cpp
@@ -74,7 +74,7 @@ CGE2Engine::CGE2Engine(OSystem *syst, const ADGameDescription *gameDescription)
_quitFlag = false;
_bitmapPalette = nullptr;
_music = true;
- _oldMusicVolume = ConfMan.getInt("music_volume");;
+ _oldMusicVolume = ConfMan.getInt("music_volume");
_startupMode = 1;
_now = 1;
_sex = 1;
@@ -94,7 +94,7 @@ CGE2Engine::CGE2Engine(OSystem *syst, const ADGameDescription *gameDescription)
_enaVox = true;
_sayCap = true;
_sayVox = true;
- _oldSayVox = false;
+ _oldSpeechVolume = ConfMan.getInt("speech_volume");
_req = 1;
_midiNotify = nullptr;
_spriteNotify = nullptr;
@@ -167,6 +167,7 @@ bool CGE2Engine::hasFeature(EngineFeature f) const {
Common::Error CGE2Engine::run() {
syncSoundSettings();
+ syncSpeechSettings();
initGraphics(kScrWidth, kScrHeight, false);
init();
@@ -177,11 +178,10 @@ Common::Error CGE2Engine::run() {
return Common::kNoError;
}
-void CGE2Engine::syncSoundSettings() {
- Engine::syncSoundSettings();
-
+void CGE2Engine::syncSpeechSettings() {
_enaCap = _sayCap = ConfMan.getBool("subtitles");
_enaVox = _sayVox = !ConfMan.getBool("speech_mute");
}
+
} // End of namespace CGE2
diff --git a/engines/cge2/cge2.h b/engines/cge2/cge2.h
index 62db99a4ab..363c7c431c 100644
--- a/engines/cge2/cge2.h
+++ b/engines/cge2/cge2.h
@@ -133,7 +133,7 @@ private:
void syncHeader(Common::Serializer &s);
bool loadGame(int slotNumber);
void resetGame();
- void syncSoundSettings();
+ void syncSpeechSettings();
public:
CGE2Engine(OSystem *syst, const ADGameDescription *gameDescription);
virtual bool hasFeature(EngineFeature f) const;
@@ -285,7 +285,7 @@ public:
bool _flag[4];
bool _sayCap;
bool _sayVox;
- bool _oldSayVox;
+ int _oldSpeechVolume;
int _req;
NotifyFunctionType _midiNotify;
NotifyFunctionType _spriteNotify;
diff --git a/engines/cge2/saveload.cpp b/engines/cge2/saveload.cpp
index 6d7bb2492a..3c57e621f2 100644
--- a/engines/cge2/saveload.cpp
+++ b/engines/cge2/saveload.cpp
@@ -368,7 +368,7 @@ bool CGE2Engine::loadGame(int slotNumber) {
syncGame(readStream, nullptr);
delete readStream;
- syncSoundSettings();
+ syncSpeechSettings();
initToolbar();
loadHeroes();
diff --git a/engines/cge2/toolbar.cpp b/engines/cge2/toolbar.cpp
index e643632bbe..3c0ee52606 100644
--- a/engines/cge2/toolbar.cpp
+++ b/engines/cge2/toolbar.cpp
@@ -75,8 +75,21 @@ void CGE2Engine::optionTouch(int opt, uint16 mask) {
switchCap();
break;
case 9:
- if (mask & kMouseLeftUp)
+ if ((mask & kMouseLeftUp) && !ConfMan.getBool("mute")) {
switchVox();
+
+ switch (_sayVox) {
+ case false:
+ _oldSpeechVolume = ConfMan.getInt("speech_volume");
+ ConfMan.setInt("speech_volume", 0);
+ break;
+ case true:
+ ConfMan.setInt("speech_volume", _oldSpeechVolume);
+ break;
+ default:
+ break;
+ }
+ }
break;
default:
break;
@@ -162,7 +175,21 @@ void CGE2Engine::switchSay() {
}
void CGE2Engine::checkSaySwitch() {
- warning("STUB: checkSaySwitch()");
+ bool mute = false;
+ if (ConfMan.hasKey("mute"))
+ mute = ConfMan.getBool("mute");
+ bool speechMuted = mute;
+ if (!speechMuted) {
+ int speechVolume = ConfMan.getInt("speech_volume");
+ speechMuted = speechVolume == 0;
+ }
+
+ if (!speechMuted && !_sayVox) {
+ switchVox();
+ }
+ if (speechMuted && _sayVox) {
+ switchVox();
+ }
}
void CGE2Engine::initToolbar() {