diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sci/graphics/cursor.cpp | 12 | ||||
-rw-r--r-- | engines/sci/graphics/cursor.h | 7 | ||||
-rw-r--r-- | engines/sci/sci.cpp | 1 |
3 files changed, 19 insertions, 1 deletions
diff --git a/engines/sci/graphics/cursor.cpp b/engines/sci/graphics/cursor.cpp index 8de9ced57c..30fc7a0f3d 100644 --- a/engines/sci/graphics/cursor.cpp +++ b/engines/sci/graphics/cursor.cpp @@ -23,6 +23,7 @@ * */ +#include "common/config-manager.h" #include "common/events.h" #include "common/macresman.h" #include "common/system.h" @@ -59,6 +60,10 @@ 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; } GfxCursor::~GfxCursor() { @@ -171,6 +176,10 @@ void GfxCursor::kernelSetView(GuiResourceId viewNum, int loopNum, int celNum, Co if (_cachedCursors.size() >= MAX_CACHED_CURSORS) purgeCache(); + // Use the original Windows cursors in KQ6, if requested + if (_useOriginalKQ6WinCursors) + viewNum += 2000; // Windows cursors + if (!_cachedCursors.contains(viewNum)) _cachedCursors[viewNum] = new GfxView(_resMan, _screen, _palette, viewNum); @@ -195,7 +204,7 @@ void GfxCursor::kernelSetView(GuiResourceId viewNum, int loopNum, int celNum, Co } const byte *rawBitmap = cursorView->getBitmap(loopNum, celNum); - if (_upscaledHires) { + if (_upscaledHires && !_useOriginalKQ6WinCursors) { // Scale cursor by 2x - note: sierra didn't do this, but it looks much better width *= 2; height *= 2; @@ -226,6 +235,7 @@ void GfxCursor::kernelSetMacCursor(GuiResourceId viewNum, int loopNum, int celNu } // TODO: What about the 2000 resources? Inventory items? How to handle? + // Update: Perhaps these are handled like the Windows cursors in KQ6? // TODO: 1000 + celNum won't work for GK1 Resource *resource = _resMan->findResource(ResourceId(kResourceTypeCursor, 1000 + celNum), false); diff --git a/engines/sci/graphics/cursor.h b/engines/sci/graphics/cursor.h index ae3b51e26a..cb65398f4b 100644 --- a/engines/sci/graphics/cursor.h +++ b/engines/sci/graphics/cursor.h @@ -112,6 +112,13 @@ private: CursorCache _cachedCursors; 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. + bool _useOriginalKQ6WinCursors; }; } // End of namespace Sci diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp index 08256a86ca..35fdbe4ea7 100644 --- a/engines/sci/sci.cpp +++ b/engines/sci/sci.cpp @@ -184,6 +184,7 @@ Common::Error SciEngine::run() { // Assign default values to the config manager, in case settings are missing ConfMan.registerDefault("sci_originalsaveload", "false"); ConfMan.registerDefault("native_fb01", "false"); + ConfMan.registerDefault("windows_cursors", "false"); // Windows cursors for KQ6 Windows _resMan = new ResourceManager(); assert(_resMan); |