diff options
Diffstat (limited to 'engines/sci/graphics/cursor.cpp')
-rw-r--r-- | engines/sci/graphics/cursor.cpp | 12 |
1 files changed, 11 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); |