aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/riven.cpp
diff options
context:
space:
mode:
authorMatthew Hoops2011-03-07 01:07:53 -0500
committerMatthew Hoops2011-03-07 01:10:01 -0500
commitad7400524b8e024577169f7dd4cb4d586ee37fa0 (patch)
tree505324966b7675a277b5d14cb37b138f61e5829c /engines/mohawk/riven.cpp
parentd49f3a8a781b28ba46e22e8f8a2c486a146b7e8c (diff)
downloadscummvm-rg350-ad7400524b8e024577169f7dd4cb4d586ee37fa0.tar.gz
scummvm-rg350-ad7400524b8e024577169f7dd4cb4d586ee37fa0.tar.bz2
scummvm-rg350-ad7400524b8e024577169f7dd4cb4d586ee37fa0.zip
MOHAWK: Make Riven use original executables for cursors
It will try both Windows and Macintosh executables. The hardcoded cursors have been removed.
Diffstat (limited to 'engines/mohawk/riven.cpp')
-rw-r--r--engines/mohawk/riven.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/engines/mohawk/riven.cpp b/engines/mohawk/riven.cpp
index abc7f5304e..19adf3fe2f 100644
--- a/engines/mohawk/riven.cpp
+++ b/engines/mohawk/riven.cpp
@@ -120,7 +120,15 @@ Common::Error MohawkEngine_Riven::run() {
_externalScriptHandler = new RivenExternal(this);
_optionsDialog = new RivenOptionsDialog(this);
_scriptMan = new RivenScriptManager(this);
- _cursor = new RivenCursorManager();
+
+ // Create the cursor manager
+ // TODO: Error handling when none can be found
+ if (Common::File::exists("rivendmo.exe"))
+ _cursor = new PECursorManager("rivendmo.exe");
+ else if (Common::File::exists("riven.exe"))
+ _cursor = new PECursorManager("riven.exe");
+ else // last resort: try the Mac executable
+ _cursor = new MacCursorManager("Riven");
_rnd = new Common::RandomSource();
g_eventRec.registerRandomSource(*_rnd, "riven");
@@ -135,6 +143,7 @@ Common::Error MohawkEngine_Riven::run() {
// Start at main cursor
_cursor->setCursor(kRivenMainCursor);
+ _system->updateScreen();
// Let's begin, shall we?
if (getFeatures() & GF_DEMO) {
@@ -488,10 +497,12 @@ void MohawkEngine_Riven::checkHotspotChange() {
if (_curHotspot != hotspotIndex) {
_curHotspot = hotspotIndex;
_cursor->setCursor(_hotspots[_curHotspot].mouse_cursor);
+ _system->updateScreen();
}
} else {
_curHotspot = -1;
_cursor->setCursor(kRivenMainCursor);
+ _system->updateScreen();
}
}