diff options
author | Filippos Karapetis | 2010-11-26 12:37:24 +0000 |
---|---|---|
committer | Filippos Karapetis | 2010-11-26 12:37:24 +0000 |
commit | d3b14e1445e10640847ab16545c769da2d32592d (patch) | |
tree | 61b3f33af7b8e4e873c4b0915a03d8233eeaf32f /engines/sci/graphics | |
parent | 10476048f89ae0987d8883446ceba4594ff94a6e (diff) | |
download | scummvm-rg350-d3b14e1445e10640847ab16545c769da2d32592d.tar.gz scummvm-rg350-d3b14e1445e10640847ab16545c769da2d32592d.tar.bz2 scummvm-rg350-d3b14e1445e10640847ab16545c769da2d32592d.zip |
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
Diffstat (limited to 'engines/sci/graphics')
-rw-r--r-- | engines/sci/graphics/cursor.cpp | 12 | ||||
-rw-r--r-- | engines/sci/graphics/cursor.h | 7 |
2 files changed, 18 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 |