diff options
| author | Martin Kiewitz | 2015-06-12 18:33:23 +0200 | 
|---|---|---|
| committer | Martin Kiewitz | 2015-06-12 18:33:23 +0200 | 
| commit | 4858adb72d8d83ea5ae9f024bbe978023a19ef06 (patch) | |
| tree | ccebc5bcfee04a8cab610bcf2919e968027911d2 | |
| parent | 174aa230b682c466018aadd2e69457a51cf0d2c5 (diff) | |
| download | scummvm-rg350-4858adb72d8d83ea5ae9f024bbe978023a19ef06.tar.gz scummvm-rg350-4858adb72d8d83ea5ae9f024bbe978023a19ef06.tar.bz2 scummvm-rg350-4858adb72d8d83ea5ae9f024bbe978023a19ef06.zip | |
SHERLOCK: 3DO: mouse cursor support
| -rw-r--r-- | engines/sherlock/events.cpp | 16 | ||||
| -rw-r--r-- | engines/sherlock/image_file.cpp | 4 | ||||
| -rw-r--r-- | engines/sherlock/image_file.h | 2 | 
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); | 
