aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Kiewitz2015-06-12 18:33:23 +0200
committerMartin Kiewitz2015-06-12 18:33:23 +0200
commit4858adb72d8d83ea5ae9f024bbe978023a19ef06 (patch)
treeccebc5bcfee04a8cab610bcf2919e968027911d2
parent174aa230b682c466018aadd2e69457a51cf0d2c5 (diff)
downloadscummvm-rg350-4858adb72d8d83ea5ae9f024bbe978023a19ef06.tar.gz
scummvm-rg350-4858adb72d8d83ea5ae9f024bbe978023a19ef06.tar.bz2
scummvm-rg350-4858adb72d8d83ea5ae9f024bbe978023a19ef06.zip
SHERLOCK: 3DO: mouse cursor support
-rw-r--r--engines/sherlock/events.cpp16
-rw-r--r--engines/sherlock/image_file.cpp4
-rw-r--r--engines/sherlock/image_file.h2
3 files changed, 17 insertions, 5 deletions
diff --git a/engines/sherlock/events.cpp b/engines/sherlock/events.cpp
index f7031f012e..1ae19c1890 100644
--- a/engines/sherlock/events.cpp
+++ b/engines/sherlock/events.cpp
@@ -54,7 +54,13 @@ void Events::loadCursors(const Common::String &filename) {
hideCursor();
delete _cursorImages;
- _cursorImages = new ImageFile(filename);
+ if (_vm->getPlatform() != Common::kPlatform3DO) {
+ // PC
+ _cursorImages = new ImageFile3DO(filename);
+ } else {
+ // 3DO
+ _cursorImages = new ImageFile3DO(filename, true);
+ }
_cursorId = INVALID_CURSOR;
}
@@ -82,7 +88,13 @@ void Events::setCursor(CursorId cursorId) {
void Events::setCursor(const Graphics::Surface &src, int hotspotX, int hotspotY) {
_cursorId = INVALID_CURSOR;
- CursorMan.replaceCursor(src.getPixels(), src.w, src.h, hotspotX, hotspotY, 0xff);
+ if (_vm->getPlatform() != Common::kPlatform3DO) {
+ // PC 8-bit palettized
+ CursorMan.replaceCursor(src.getPixels(), src.w, src.h, hotspotX, hotspotY, 0xff);
+ } else {
+ // 3DO RGB565
+ CursorMan.replaceCursor(src.getPixels(), src.w, src.h, hotspotX, hotspotY, 0x0000, false, &src.format);
+ }
showCursor();
}
diff --git a/engines/sherlock/image_file.cpp b/engines/sherlock/image_file.cpp
index d47f2c59a3..43d3cf3de2 100644
--- a/engines/sherlock/image_file.cpp
+++ b/engines/sherlock/image_file.cpp
@@ -243,14 +243,14 @@ void ImageFile3DO::setVm(SherlockEngine *vm) {
_vm = vm;
}
-ImageFile3DO::ImageFile3DO(const Common::String &name) {
+ImageFile3DO::ImageFile3DO(const Common::String &name, bool isRoomDataFormat) {
Common::File *dataStream = new Common::File();
if (!dataStream->open(name)) {
error("unable to open %s\n", name.c_str());
}
- load(*dataStream, false); // this is never called for room data
+ load(*dataStream, isRoomDataFormat);
delete dataStream;
}
diff --git a/engines/sherlock/image_file.h b/engines/sherlock/image_file.h
index 5cdf1db4be..ddca4b883e 100644
--- a/engines/sherlock/image_file.h
+++ b/engines/sherlock/image_file.h
@@ -135,7 +135,7 @@ private:
void loadAnimationFile(Common::SeekableReadStream &stream);
public:
- ImageFile3DO(const Common::String &name);
+ ImageFile3DO(const Common::String &name, bool isRoomDataFormat = false);
ImageFile3DO(Common::SeekableReadStream &stream, bool isRoomData = false);
~ImageFile3DO();
static void setVm(SherlockEngine *vm);