[Scummvm-cvs-logs] scummvm master -> fd6da47906ed8cbb7fa96ea56aaf352bd103f6b3

dreammaster dreammaster at scummvm.org
Fri Jun 5 01:22:45 CEST 2015


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
fd6da47906 SHERLOCK: Implemented remaining new sequence opcodes in checkObject


Commit: fd6da47906ed8cbb7fa96ea56aaf352bd103f6b3
    https://github.com/scummvm/scummvm/commit/fd6da47906ed8cbb7fa96ea56aaf352bd103f6b3
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2015-06-04T19:21:48-04:00

Commit Message:
SHERLOCK: Implemented remaining new sequence opcodes in checkObject

Changed paths:
    engines/sherlock/objects.cpp



diff --git a/engines/sherlock/objects.cpp b/engines/sherlock/objects.cpp
index ce30387..0b3c294 100644
--- a/engines/sherlock/objects.cpp
+++ b/engines/sherlock/objects.cpp
@@ -750,6 +750,7 @@ void Object::toggleHidden() {
 void Object::checkObject() {
 	Scene &scene = *_vm->_scene;
 	Sound &sound = *_vm->_sound;
+	Talk &talk = *_vm->_talk;
 	int checkFrame = _allow ? MAX_FRAME : FRAMES_END;
 	bool codeFound;
 
@@ -788,7 +789,10 @@ void Object::checkObject() {
 					++_frameNumber;
 				}
 			} else if (IS_ROSE_TATTOO && (v == TALK_SEQ_CODE || v == TALK_LISTEN_CODE)) {
-				error("TODO");
+				if (_talkSeq)
+					setObjTalkSequence(_talkSeq);
+				else
+					setObjSequence(0, false);
 			} else  if (v >= GOTO_CODE) {
 				// Goto code found
 				v -= GOTO_CODE;
@@ -828,11 +832,46 @@ void Object::checkObject() {
 					break;
 				}
 			} else if (IS_ROSE_TATTOO && v == TELEPORT_CODE) {
-				error("TODO");
+				_position.x = READ_LE_UINT16(&_sequences[_frameNumber + 1]);
+				_position.y = READ_LE_UINT16(&_sequences[_frameNumber + 3]);
+
+				_frameNumber += 5;
 			} else if (IS_ROSE_TATTOO && v == CALL_TALK_CODE) {
-				error("TODO");
+				Common::String filename;
+				for (int idx = 0; idx < 8; ++idx) {
+					if (_sequences[_frameNumber + 1 + idx] != 1)
+						filename += (char)_sequences[_frameNumber + 1 + idx];
+					else
+						break;
+				}
+
+				_frameNumber += 8;
+				talk.talkTo(filename);
+
 			} else if (IS_ROSE_TATTOO && v == HIDE_CODE) {
-				error("TODO");
+				switch (_sequences[_frameNumber + 2]) {
+				case 1:
+					// Hide Object
+					if (scene._bgShapes[_sequences[_frameNumber + 1] - 1]._type != HIDDEN)
+						scene._bgShapes[_sequences[_frameNumber + 1] - 1].toggleHidden();
+					break;
+
+				case 2:
+					// Activate Object
+					if (scene._bgShapes[_sequences[_frameNumber + 1] - 1]._type == HIDDEN)
+						scene._bgShapes[_sequences[_frameNumber + 1] - 1].toggleHidden();
+					break;
+
+				case 3:
+					// Toggle Object
+					scene._bgShapes[_sequences[_frameNumber + 1] - 1].toggleHidden();
+					break;
+
+				default:
+					break;
+				}
+				_frameNumber += 3;
+			
 			} else {
 				v -= 128;
 






More information about the Scummvm-git-logs mailing list