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

dreammaster dreammaster at scummvm.org
Sun Jul 12 16:31:56 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:
eafce15599 SHERLOCK: RT: Implement talking to characters


Commit: eafce15599f960b86da5e49fba87ce9c9b241c34
    https://github.com/scummvm/scummvm/commit/eafce15599f960b86da5e49fba87ce9c9b241c34
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2015-07-12T10:30:41-04:00

Commit Message:
SHERLOCK: RT: Implement talking to characters

Changed paths:
    engines/sherlock/talk.cpp



diff --git a/engines/sherlock/talk.cpp b/engines/sherlock/talk.cpp
index 6d8bfee..0a5badc 100644
--- a/engines/sherlock/talk.cpp
+++ b/engines/sherlock/talk.cpp
@@ -443,12 +443,14 @@ void Talk::talk(int objNum) {
 	Scene &scene = *_vm->_scene;
 	Screen &screen = *_vm->_screen;
 	UserInterface &ui = *_vm->_ui;
-	Object &obj = scene._bgShapes[objNum];
+	//Object &obj = scene._bgShapes[objNum];
 
 	ui._windowBounds.top = CONTROLS_Y;
 	ui._infoFlag = true;
 	_speaker = SPEAKER_REMOVE;
-	loadTalkFile(scene._bgShapes[objNum]._name);
+
+	Common::String talkFilename = (objNum >= 1000) ? people[objNum - 1000]._npcName : scene._bgShapes[objNum]._name;
+	loadTalkFile(talkFilename);
 
 	// Find the first statement with the correct flags
 	int select = -1;
@@ -469,33 +471,44 @@ void Talk::talk(int objNum) {
 		// Start talk in stealth mode
 		_talkStealth = 2;
 
-		talkTo(obj._name);
+		talkTo(talkFilename);
 	} else if (statement._statement.hasPrefix("*")) {
 		// Character being spoken to will speak first
-		clearSequences();
-		pushSequence(_talkTo);
-		setStillSeq(_talkTo);
+		if (objNum > 1000) {
+			(*static_cast<Tattoo::TattooPeople *>(_vm->_people))[objNum - 1000].walkHolmesToNPC();
+		} else {
+			Object &obj = scene._bgShapes[objNum];
+			clearSequences();
+			pushSequence(_talkTo);
+			setStillSeq(_talkTo);
 
-		events.setCursor(WAIT);
-		if (obj._lookPosition.y != 0)
-			// Need to walk to character first
-			people[HOLMES].walkToCoords(obj._lookPosition, obj._lookPosition._facing);
-		events.setCursor(ARROW);
+			events.setCursor(WAIT);
+			if (obj._lookPosition.y != 0)
+				// Need to walk to character first
+				people[HOLMES].walkToCoords(obj._lookPosition, obj._lookPosition._facing);
+			events.setCursor(ARROW);
+		}
 
 		if (!_talkToAbort)
-			talkTo(obj._name);
+			talkTo(talkFilename);
 	} else {
 		// Holmes will be speaking first
-		clearSequences();
-		pushSequence(_talkTo);
-		setStillSeq(_talkTo);
-
 		_talkToFlag = false;
-		events.setCursor(WAIT);
-		if (obj._lookPosition.y != 0)
-			// Walk over to person to talk to
-			people[HOLMES].walkToCoords(obj._lookPosition, obj._lookPosition._facing);
-		events.setCursor(ARROW);
+
+		if (objNum > 1000) {
+			(*static_cast<Tattoo::TattooPeople *>(_vm->_people))[objNum - 1000].walkHolmesToNPC();
+		} else {
+			Object &obj = scene._bgShapes[objNum];
+			clearSequences();
+			pushSequence(_talkTo);
+			setStillSeq(_talkTo);
+
+			events.setCursor(WAIT);
+			if (obj._lookPosition.y != 0)
+				// Walk over to person to talk to
+				people[HOLMES].walkToCoords(obj._lookPosition, obj._lookPosition._facing);
+			events.setCursor(ARROW);
+		}
 
 		if (!_talkToAbort) {
 			// See if walking over triggered a conversation






More information about the Scummvm-git-logs mailing list