[Scummvm-cvs-logs] scummvm master -> 90eb0f19530e0f6eaccba5b465ab560513716bd3

dreammaster dreammaster at scummvm.org
Sun Jul 12 21:14:42 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:
90eb0f1953 SHERLOCK: RT: Implement cmdSetSceneEntryFlag


Commit: 90eb0f19530e0f6eaccba5b465ab560513716bd3
    https://github.com/scummvm/scummvm/commit/90eb0f19530e0f6eaccba5b465ab560513716bd3
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2015-07-12T15:13:40-04:00

Commit Message:
SHERLOCK: RT: Implement cmdSetSceneEntryFlag

Changed paths:
    engines/sherlock/tattoo/tattoo_scene.h
    engines/sherlock/tattoo/tattoo_talk.cpp



diff --git a/engines/sherlock/tattoo/tattoo_scene.h b/engines/sherlock/tattoo/tattoo_scene.h
index 432233f..c432849 100644
--- a/engines/sherlock/tattoo/tattoo_scene.h
+++ b/engines/sherlock/tattoo/tattoo_scene.h
@@ -35,12 +35,12 @@ enum {
 };
 
 struct SceneTripEntry {
-	bool _flag;
+	int _flag;
 	int _sceneNumber;
 	int _numTimes;
 
-	SceneTripEntry() : _flag(false), _sceneNumber(0), _numTimes(0) {}
-	SceneTripEntry(bool flag, int sceneNumber, int numTimes) : _flag(flag),
+	SceneTripEntry() : _flag(0), _sceneNumber(0), _numTimes(0) {}
+	SceneTripEntry(int flag, int sceneNumber, int numTimes) : _flag(flag),
 		_sceneNumber(sceneNumber), _numTimes(numTimes) {}
 };
 
diff --git a/engines/sherlock/tattoo/tattoo_talk.cpp b/engines/sherlock/tattoo/tattoo_talk.cpp
index 5bfccdc..e176d38 100644
--- a/engines/sherlock/tattoo/tattoo_talk.cpp
+++ b/engines/sherlock/tattoo/tattoo_talk.cpp
@@ -726,7 +726,32 @@ OpcodeReturn TattooTalk::cmdSetNPCWalkGraphics(const byte *&str) {
 	return RET_SUCCESS;
 }
 
-OpcodeReturn TattooTalk::cmdSetSceneEntryFlag(const byte *&str) { error("TODO: script opcode (cmdSetSceneEntryFlag)"); }
+OpcodeReturn TattooTalk::cmdSetSceneEntryFlag(const byte *&str) {
+	TattooScene &scene = *(TattooScene *)_vm->_scene;
+	++str;
+	int flag = (str[0] - 1) * 256 + str[1] - 1 - (str[1] == 1);
+
+	int flag1 = flag & 16383;
+	if (flag > 16383)
+		flag1 *= -1;
+
+	str += 2;
+
+	// Make sure that this instance is not already being tracked
+	bool found = false;
+	for (uint idx = 0; idx < scene._sceneTripCounters.size() && !found; ++idx) {
+		SceneTripEntry &entry = scene._sceneTripCounters[idx];
+		if (entry._flag == flag1 && entry._sceneNumber == str[0] - 1)
+			found = true;
+	}
+
+	// Only add it if it's not being tracked already
+	if (!found)
+		scene._sceneTripCounters.push_back(SceneTripEntry(flag1, str[0] - 1, str[1] - 1));
+
+	++str;
+	return RET_SUCCESS;
+}
 
 OpcodeReturn TattooTalk::cmdSetTalkSequence(const byte *&str) {
 	TattooPeople &people = *(TattooPeople *)_vm->_people;






More information about the Scummvm-git-logs mailing list