diff options
Diffstat (limited to 'engines/sci/sci.h')
-rw-r--r-- | engines/sci/sci.h | 71 |
1 files changed, 44 insertions, 27 deletions
diff --git a/engines/sci/sci.h b/engines/sci/sci.h index 3b9844b326..c6813aa07c 100644 --- a/engines/sci/sci.h +++ b/engines/sci/sci.h @@ -8,12 +8,12 @@ * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. - + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -55,6 +55,7 @@ class AudioPlayer; class SoundCommandParser; class EventManager; class SegManager; +class ScriptPatcher; class GfxAnimate; class GfxCache; @@ -82,28 +83,30 @@ class GfxFrameout; // our engine debug levels enum kDebugLevels { - kDebugLevelError = 1 << 0, - kDebugLevelNodes = 1 << 1, - kDebugLevelGraphics = 1 << 2, - kDebugLevelStrings = 1 << 3, - kDebugLevelMemory = 1 << 4, - kDebugLevelFuncCheck = 1 << 5, - kDebugLevelBresen = 1 << 6, - kDebugLevelSound = 1 << 7, - kDebugLevelBaseSetter = 1 << 8, - kDebugLevelParser = 1 << 9, - kDebugLevelSaid = 1 << 10, - kDebugLevelFile = 1 << 11, - kDebugLevelTime = 1 << 12, - kDebugLevelRoom = 1 << 13, - kDebugLevelAvoidPath = 1 << 14, - kDebugLevelDclInflate = 1 << 15, - kDebugLevelVM = 1 << 16, - kDebugLevelScripts = 1 << 17, - kDebugLevelGC = 1 << 18, - kDebugLevelResMan = 1 << 19, - kDebugLevelOnStartup = 1 << 20, - kDebugLevelDebugMode = 1 << 21 + kDebugLevelError = 1 << 0, + kDebugLevelNodes = 1 << 1, + kDebugLevelGraphics = 1 << 2, + kDebugLevelStrings = 1 << 3, + kDebugLevelMemory = 1 << 4, + kDebugLevelFuncCheck = 1 << 5, + kDebugLevelBresen = 1 << 6, + kDebugLevelSound = 1 << 7, + kDebugLevelBaseSetter = 1 << 8, + kDebugLevelParser = 1 << 9, + kDebugLevelSaid = 1 << 10, + kDebugLevelFile = 1 << 11, + kDebugLevelTime = 1 << 12, + kDebugLevelRoom = 1 << 13, + kDebugLevelAvoidPath = 1 << 14, + kDebugLevelDclInflate = 1 << 15, + kDebugLevelVM = 1 << 16, + kDebugLevelScripts = 1 << 17, + kDebugLevelGC = 1 << 18, + kDebugLevelResMan = 1 << 19, + kDebugLevelOnStartup = 1 << 20, + kDebugLevelDebugMode = 1 << 21, + kDebugLevelScriptPatcher = 1 << 22, + kDebugLevelWorkarounds = 1 << 23 }; enum SciGameId { @@ -138,6 +141,7 @@ enum SciGameId { GID_KQ5, GID_KQ6, GID_KQ7, + GID_KQUESTIONS, GID_LAURABOW, GID_LAURABOW2, GID_LIGHTHOUSE, @@ -243,13 +247,15 @@ public: * and we add this functionality in ScummVM: * - Space Quest 4 CD * - Freddy Pharkas CD + * - Laura Bow 2 CD * SCI1.1 games which don't support simultaneous speech and subtitles, * and we haven't added any extra functionality in ScummVM because extra * script patches are needed: - * - Laura Bow 2 CD * - King's Quest 6 CD */ + bool speechAndSubtitlesEnabled(); void syncIngameAudioOptions(); + void updateScummVMAudioOptions(); const SciGameId &getGameId() const { return _gameId; } const char *getGameIdStr() const; @@ -265,6 +271,7 @@ public: bool hasMacIconBar() const; inline ResourceManager *getResMan() const { return _resMan; } + inline ScriptPatcher *getScriptPatcher() const { return _scriptPatcher; } inline Kernel *getKernel() const { return _kernel; } inline EngineState *getEngineState() const { return _gamestate; } inline Vocabulary *getVocabulary() const { return _vocabulary; } @@ -308,13 +315,16 @@ public: * if NULL is passed no subtitle will be added to the returned string * @return processed string */ - Common::String strSplit(const char *str, const char *sep = "\r----------\r"); + Common::String strSplitLanguage(const char *str, uint16 *splitLanguage, const char *sep = "\r----------\r"); + Common::String strSplit(const char *str, const char *sep = "\r----------\r") { + return strSplitLanguage(str, NULL, sep); + } kLanguage getSciLanguage(); void setSciLanguage(kLanguage lang); void setSciLanguage(); - Common::String getSciLanguageString(const Common::String &str, kLanguage lang, kLanguage *lang2 = NULL) const; + Common::String getSciLanguageString(const Common::String &str, kLanguage lang, kLanguage *lang2 = NULL, uint16 *languageSplitter = NULL) const; // Check if vocabulary needs to get switched (in multilingual parser games) void checkVocabularySwitch(); @@ -396,6 +406,7 @@ private: const ADGameDescription *_gameDescription; const SciGameId _gameId; ResourceManager *_resMan; /**< The resource manager */ + ScriptPatcher *_scriptPatcher; /**< The script patcher */ EngineState *_gamestate; Kernel *_kernel; Vocabulary *_vocabulary; @@ -422,6 +433,12 @@ extern SciEngine *g_sci; SciVersion getSciVersion(); /** + * Same as above, but this version doesn't assert on unknown SCI versions. + * Only used by the fallback detector + */ +SciVersion getSciVersionForDetection(); + +/** * Convenience function converting an SCI version into a human-readable string. */ const char *getSciVersionDesc(SciVersion version); |