From 7e4c5dce4a787ac6876b9548e206757196a1ef09 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Wed, 7 Mar 2012 23:20:15 +0200 Subject: SCI: Add a new configuration option for SQ4 CD, "silver_cursors" This allows the user to choose the alternate set of silver mouse cursors that is available in the game resources of the game, instead of the original golden ones --- engines/sci/graphics/cursor.cpp | 26 ++++++++++++++++++++++++++ engines/sci/graphics/cursor.h | 15 ++++++++++----- engines/sci/sci.cpp | 1 + 3 files changed, 37 insertions(+), 5 deletions(-) (limited to 'engines') diff --git a/engines/sci/graphics/cursor.cpp b/engines/sci/graphics/cursor.cpp index daab532d0e..52a5961070 100644 --- a/engines/sci/graphics/cursor.cpp +++ b/engines/sci/graphics/cursor.cpp @@ -59,10 +59,16 @@ GfxCursor::GfxCursor(ResourceManager *resMan, GfxPalette *palette, GfxScreen *sc _zoomColor = 0; _zoomMultiplier = 0; _cursorSurface = 0; + if (g_sci && g_sci->getGameId() == GID_KQ6 && g_sci->getPlatform() == Common::kPlatformWindows) _useOriginalKQ6WinCursors = ConfMan.getBool("windows_cursors"); else _useOriginalKQ6WinCursors = false; + + if (g_sci && g_sci->getGameId() == GID_SQ4 && getSciVersion() == SCI_VERSION_1_1) + _useSilverSQ4CDCursors = ConfMan.getBool("silver_cursors"); + else + _useSilverSQ4CDCursors = false; } GfxCursor::~GfxCursor() { @@ -206,6 +212,26 @@ void GfxCursor::kernelSetView(GuiResourceId viewNum, int loopNum, int celNum, Co return; } + // Use the alternate silver cursors in SQ4 CD, if requested + if (_useSilverSQ4CDCursors) { + switch(viewNum) { + case 850: + case 852: + case 854: + case 856: + celNum = 3; + break; + case 851: + case 853: + case 855: + case 999: + celNum = 2; + break; + default: + break; + } + } + if (!_cachedCursors.contains(viewNum)) _cachedCursors[viewNum] = new GfxView(_resMan, _screen, _palette, viewNum); diff --git a/engines/sci/graphics/cursor.h b/engines/sci/graphics/cursor.h index 25109b3920..ac928f50bb 100644 --- a/engines/sci/graphics/cursor.h +++ b/engines/sci/graphics/cursor.h @@ -113,13 +113,18 @@ private: bool _isVisible; - // KQ6 Windows has different black and white cursors. If this is - // true (set from the sci_originalkq6wincursors ini setting), then - // we use these, and don't scale them by 2x like the rest of the - // graphics, like SSCI did. These look very ugly, which is why - // they aren't enabled by default. + // KQ6 Windows has different black and white cursors. If this is true (set + // from the windows_cursors ini setting), then we use these and don't scale + // them by 2x like the rest of the graphics, like SSCI did. These look very + // ugly, which is why they aren't enabled by default. bool _useOriginalKQ6WinCursors; + // The CD version of SQ4 contains a complete set of silver mouse cursors. + // If this is true (set from the silver_cursors ini setting), then we use + // these instead and replace the game's gold cursors with their silver + // equivalents. + bool _useSilverSQ4CDCursors; + // Mac versions of games use a remap list to remap their cursors Common::Array _macCursorRemap; }; diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp index 00731fc1cf..4ae55cbcba 100644 --- a/engines/sci/sci.cpp +++ b/engines/sci/sci.cpp @@ -194,6 +194,7 @@ Common::Error SciEngine::run() { ConfMan.registerDefault("sci_originalsaveload", "false"); ConfMan.registerDefault("native_fb01", "false"); ConfMan.registerDefault("windows_cursors", "false"); // Windows cursors for KQ6 Windows + ConfMan.registerDefault("silver_cursors", "false"); // Silver cursors for SQ4 CD _resMan = new ResourceManager(); assert(_resMan); -- cgit v1.2.3