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
This commit is contained in:
parent
10476048f8
commit
d3b14e1445
4 changed files with 27 additions and 1 deletions
8
README
8
README
|
@ -2004,6 +2004,14 @@ Flight of the Amazon Queen adds the following non-standard keywords:
|
|||
music_mute bool If true, music is muted
|
||||
sfx_mute bool If true, sound effects are muted
|
||||
|
||||
King's Quest VI Windows adds the following non-standard keywords:
|
||||
|
||||
windows_cursors bool If true, the original unscaled black and white
|
||||
Windows cursors are used instead of the DOS
|
||||
ones. If false, the DOS cursors are used in the
|
||||
Windows version, upscaled to match the rest of
|
||||
the upscaled graphics
|
||||
|
||||
Simon the Sorcerer 1 and 2 add the following non-standard keywords:
|
||||
|
||||
music_mute bool If true, music is muted
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue