diff options
author | Johannes Schickel | 2010-08-05 14:41:00 +0000 |
---|---|---|
committer | Johannes Schickel | 2010-08-05 14:41:00 +0000 |
commit | 9cd333152b763a109cf5b88af508678c1ea3fba7 (patch) | |
tree | 177ed509f1af53f79349a784c9dc1415ba9d4f20 /engines | |
parent | ff2ad216b1e4042e8b64323998605d2d83e36427 (diff) | |
download | scummvm-rg350-9cd333152b763a109cf5b88af508678c1ea3fba7.tar.gz scummvm-rg350-9cd333152b763a109cf5b88af508678c1ea3fba7.tar.bz2 scummvm-rg350-9cd333152b763a109cf5b88af508678c1ea3fba7.zip |
KYRA: Add support for subtitle options changes via GMM.
svn-id: r51757
Diffstat (limited to 'engines')
-rw-r--r-- | engines/kyra/detection.cpp | 3 | ||||
-rw-r--r-- | engines/kyra/kyra_hof.cpp | 5 | ||||
-rw-r--r-- | engines/kyra/kyra_lok.h | 2 | ||||
-rw-r--r-- | engines/kyra/kyra_mr.cpp | 4 | ||||
-rw-r--r-- | engines/kyra/kyra_v1.cpp | 4 | ||||
-rw-r--r-- | engines/kyra/kyra_v2.cpp | 1 | ||||
-rw-r--r-- | engines/kyra/kyra_v2.h | 1 | ||||
-rw-r--r-- | engines/kyra/text_hof.cpp | 3 | ||||
-rw-r--r-- | engines/kyra/text_lok.cpp | 15 | ||||
-rw-r--r-- | engines/kyra/text_mr.cpp | 3 | ||||
-rw-r--r-- | engines/kyra/timer_hof.cpp | 3 | ||||
-rw-r--r-- | engines/kyra/timer_lok.cpp | 3 |
12 files changed, 32 insertions, 15 deletions
diff --git a/engines/kyra/detection.cpp b/engines/kyra/detection.cpp index f3e6c7c8cc..135a9ae7b2 100644 --- a/engines/kyra/detection.cpp +++ b/engines/kyra/detection.cpp @@ -105,7 +105,8 @@ bool Kyra::KyraEngine_v1::hasFeature(EngineFeature f) const { return (f == kSupportsRTL) || (f == kSupportsLoadingDuringRuntime) || - (f == kSupportsSavingDuringRuntime); + (f == kSupportsSavingDuringRuntime) || + (f == kSupportsSubtitleOptions); } bool KyraMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const { diff --git a/engines/kyra/kyra_hof.cpp b/engines/kyra/kyra_hof.cpp index 2716f0b285..0fafaa15ce 100644 --- a/engines/kyra/kyra_hof.cpp +++ b/engines/kyra/kyra_hof.cpp @@ -679,7 +679,7 @@ void KyraEngine_HoF::updateWithText() { restorePage3(); drawAnimObjects(); - if (textEnabled() && _chatText) { + if (_chatTextEnabled && _chatText) { int pageBackUp = _screen->_curPage; _screen->_curPage = 2; objectChatPrintText(_chatText, _chatObject); @@ -1996,9 +1996,10 @@ void KyraEngine_HoF::writeSettings() { } void KyraEngine_HoF::readSettings() { + KyraEngine_v2::readSettings(); + int talkspeed = ConfMan.getInt("talkspeed"); _configTextspeed = (talkspeed*95)/255 + 2; - KyraEngine_v1::readSettings(); } } // End of namespace Kyra diff --git a/engines/kyra/kyra_lok.h b/engines/kyra/kyra_lok.h index b37a14bad4..50f36d7b71 100644 --- a/engines/kyra/kyra_lok.h +++ b/engines/kyra/kyra_lok.h @@ -319,7 +319,7 @@ protected: // chat // -> process void characterSays(int vocFile, const char *chatStr, int8 charNum, int8 chatDuration); - void waitForChatToFinish(int vocFile, int16 chatDuration, const char *str, uint8 charNum); + void waitForChatToFinish(int vocFile, int16 chatDuration, const char *str, uint8 charNum, const bool printText); // -> initialization int initCharacterChat(int8 charNum); diff --git a/engines/kyra/kyra_mr.cpp b/engines/kyra/kyra_mr.cpp index 61bc3708c3..2169e5283f 100644 --- a/engines/kyra/kyra_mr.cpp +++ b/engines/kyra/kyra_mr.cpp @@ -1127,7 +1127,7 @@ void KyraEngine_MR::updateWithText() { restorePage3(); drawAnimObjects(); - if (textEnabled() && _chatText) { + if (_chatTextEnabled && _chatText) { int curPage = _screen->_curPage; _screen->_curPage = 2; objectChatPrintText(_chatText, _chatObject); @@ -1490,7 +1490,7 @@ void KyraEngine_MR::writeSettings() { } void KyraEngine_MR::readSettings() { - KyraEngine_v1::readSettings(); + KyraEngine_v2::readSettings(); _configStudio = ConfMan.getBool("studio_audience"); _configSkip = ConfMan.getBool("skip_support"); diff --git a/engines/kyra/kyra_v1.cpp b/engines/kyra/kyra_v1.cpp index 5db2c360d6..1c27716a67 100644 --- a/engines/kyra/kyra_v1.cpp +++ b/engines/kyra/kyra_v1.cpp @@ -625,6 +625,10 @@ uint8 KyraEngine_v1::getVolume(kVolumeEntry vol) { void KyraEngine_v1::syncSoundSettings() { Engine::syncSoundSettings(); + // We need to use this here to allow the subtitle options to be changed + // through the GMM's options dialog. + readSettings(); + if (_sound) _sound->updateVolumeSettings(); } diff --git a/engines/kyra/kyra_v2.cpp b/engines/kyra/kyra_v2.cpp index 34284a8e20..53c57c21cd 100644 --- a/engines/kyra/kyra_v2.cpp +++ b/engines/kyra/kyra_v2.cpp @@ -63,6 +63,7 @@ KyraEngine_v2::KyraEngine_v2(OSystem *system, const GameFlags &flags, const Engi _chatVocLow = -1; _chatText = 0; _chatObject = -1; + _chatTextEnabled = false; memset(_hiddenItems, -1, sizeof(_hiddenItems)); diff --git a/engines/kyra/kyra_v2.h b/engines/kyra/kyra_v2.h index 6aaa8c3687..6414040344 100644 --- a/engines/kyra/kyra_v2.h +++ b/engines/kyra/kyra_v2.h @@ -350,6 +350,7 @@ protected: int _chatObject; uint32 _chatEndTime; int _chatVocHigh, _chatVocLow; + bool _chatTextEnabled; EMCData _chatScriptData; EMCState _chatScriptState; diff --git a/engines/kyra/text_hof.cpp b/engines/kyra/text_hof.cpp index 48eda97f80..9d20cdd51a 100644 --- a/engines/kyra/text_hof.cpp +++ b/engines/kyra/text_hof.cpp @@ -255,7 +255,8 @@ void KyraEngine_HoF::objectChatInit(const char *str, int object, int vocHigh, in _screen->hideMouse(); - if (textEnabled()) { + _chatTextEnabled = textEnabled(); + if (_chatTextEnabled) { objectChatPrintText(str, object); _chatEndTime = _system->getMillis() + chatCalcDuration(str) * _tickLength; } else { diff --git a/engines/kyra/text_lok.cpp b/engines/kyra/text_lok.cpp index 79b16bc1be..40f2217a2b 100644 --- a/engines/kyra/text_lok.cpp +++ b/engines/kyra/text_lok.cpp @@ -32,10 +32,9 @@ namespace Kyra { -void KyraEngine_LoK::waitForChatToFinish(int vocFile, int16 chatDuration, const char *chatStr, uint8 charNum) { +void KyraEngine_LoK::waitForChatToFinish(int vocFile, int16 chatDuration, const char *chatStr, uint8 charNum, const bool printText) { bool hasUpdatedNPCs = false; bool runLoop = true; - bool drawText = textEnabled(); uint8 currPage; uint32 timeToEnd = strlen(chatStr) * 8 * _tickLength + _system->getMillis(); @@ -92,7 +91,7 @@ void KyraEngine_LoK::waitForChatToFinish(int vocFile, int16 chatDuration, const _animator->preserveAnyChangedBackgrounds(); _animator->prepDrawAllObjects(); - if (drawText) { + if (printText) { currPage = _screen->_curPage; _screen->_curPage = 2; _text->printCharacterText(chatStr, charNum, _characterList[charNum].x1); @@ -102,7 +101,7 @@ void KyraEngine_LoK::waitForChatToFinish(int vocFile, int16 chatDuration, const _animator->copyChangedObjectsForward(0); updateTextFade(); - if (((chatDuration < (int16)(_system->getMillis() - timeAtStart)) && chatDuration != -1 && drawText) || (!drawText && !snd_voiceIsPlaying())) + if (((chatDuration < (int16)(_system->getMillis() - timeAtStart)) && chatDuration != -1 && printText) || (!printText && !snd_voiceIsPlaying())) break; uint32 nextTime = loopStart + _tickLength; @@ -293,7 +292,9 @@ void KyraEngine_LoK::characterSays(int vocFile, const char *chatStr, int8 charNu _text->_talkMessageY = yPos; _text->_talkMessageH = lineNum * 10; - if (textEnabled()) { + const bool printText = textEnabled(); + + if (printText) { _animator->restoreAllObjectBackgrounds(); _screen->copyRegion(12, _text->_talkMessageY, 12, 136, 296, _text->_talkMessageH, 2, 2); @@ -310,9 +311,9 @@ void KyraEngine_LoK::characterSays(int vocFile, const char *chatStr, int8 charNu if (!speechEnabled()) vocFile = -1; - waitForChatToFinish(vocFile, chatTicks, chatStr, charNum); + waitForChatToFinish(vocFile, chatTicks, chatStr, charNum, printText); - if (textEnabled()) { + if (printText) { _animator->restoreAllObjectBackgrounds(); _screen->copyRegion(12, 136, 12, _text->_talkMessageY, 296, _text->_talkMessageH, 2, 2); diff --git a/engines/kyra/text_mr.cpp b/engines/kyra/text_mr.cpp index ea2dc48031..726d9e339f 100644 --- a/engines/kyra/text_mr.cpp +++ b/engines/kyra/text_mr.cpp @@ -265,7 +265,8 @@ void KyraEngine_MR::objectChatInit(const char *str, int object, int vocHigh, int _screen->hideMouse(); - if (textEnabled()) { + _chatTextEnabled = textEnabled(); + if (_chatTextEnabled) { objectChatPrintText(str, object); _chatEndTime = _system->getMillis() + chatCalcDuration(str) * _tickLength; } else { diff --git a/engines/kyra/timer_hof.cpp b/engines/kyra/timer_hof.cpp index 117b84f48a..d8f86e30a2 100644 --- a/engines/kyra/timer_hof.cpp +++ b/engines/kyra/timer_hof.cpp @@ -97,6 +97,9 @@ void KyraEngine_HoF::setTimer1DelaySecs(int secs) { } void KyraEngine_HoF::setWalkspeed(uint8 newSpeed) { + if (!_timer) + return; + if (newSpeed < 5) newSpeed = 3; else diff --git a/engines/kyra/timer_lok.cpp b/engines/kyra/timer_lok.cpp index 40426a3dfe..6f4948c279 100644 --- a/engines/kyra/timer_lok.cpp +++ b/engines/kyra/timer_lok.cpp @@ -188,6 +188,9 @@ void KyraEngine_LoK::timerRedrawAmulet(int timerNum) { } void KyraEngine_LoK::setWalkspeed(uint8 newSpeed) { + if (!_timer) + return; + static const uint8 speeds[] = { 11, 9, 6, 5, 3 }; assert(newSpeed < ARRAYSIZE(speeds)); |