From d3b14e1445e10640847ab16545c769da2d32592d Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Fri, 26 Nov 2010 12:37:24 +0000 Subject: SCI: Implemented FR #3101338: "King's Quest 6 Windows Mouse Icons" Added an option to use the original Windows cursors in the Windows version of KQ6 Also, added an update on how the Mac cursors are handled (perhaps the handling is the same) svn-id: r54495 --- engines/sci/graphics/cursor.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'engines/sci/graphics/cursor.cpp') 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); -- cgit v1.2.3