[Scummvm-cvs-logs] SF.net SVN: scummvm: [30694] scummvm/trunk/engines/kyra

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Mon Jan 28 23:21:47 CET 2008


Revision: 30694
          http://scummvm.svn.sourceforge.net/scummvm/?rev=30694&view=rev
Author:   lordhoto
Date:     2008-01-28 14:21:47 -0800 (Mon, 28 Jan 2008)

Log Message:
-----------
Commit slightly modified patch #1880670 "KYRA: Hof: Zanthia chat fix for towns and floppy versions".

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/kyra_v2.cpp
    scummvm/trunk/engines/kyra/kyra_v2.h
    scummvm/trunk/engines/kyra/script_v2.cpp
    scummvm/trunk/engines/kyra/text_v2.cpp

Modified: scummvm/trunk/engines/kyra/kyra_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v2.cpp	2008-01-28 22:20:55 UTC (rev 30693)
+++ scummvm/trunk/engines/kyra/kyra_v2.cpp	2008-01-28 22:21:47 UTC (rev 30694)
@@ -1880,10 +1880,10 @@
 		Opcode(o2_dummy),
 		OpcodeUnImpl(),
 		// 0x80
+		Opcode(o2_objectChat),
 		OpcodeUnImpl(),
 		OpcodeUnImpl(),
 		OpcodeUnImpl(),
-		OpcodeUnImpl(),
 		// 0x84
 		OpcodeUnImpl(),
 		OpcodeUnImpl(),
@@ -1959,3 +1959,4 @@
 
 } // end of namespace Kyra
 
+

Modified: scummvm/trunk/engines/kyra/kyra_v2.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v2.h	2008-01-28 22:20:55 UTC (rev 30693)
+++ scummvm/trunk/engines/kyra/kyra_v2.h	2008-01-28 22:21:47 UTC (rev 30694)
@@ -632,8 +632,8 @@
 	int chatGetType(const char *text);
 	int chatCalcDuration(const char *text);
 
-	void objectChat(const char *text, int object, int vocHigh, int vocLow);
-	void objectChatInit(const char *text, int object, int vocHigh, int vocLow);
+	void objectChat(const char *text, int object, int vocHigh = -1, int vocLow = -1);
+	void objectChatInit(const char *text, int object, int vocHigh = -1, int vocLow = -1);
 	void objectChatPrintText(const char *text, int object);
 	void objectChatProcess(const char *script);
 	void objectChatWaitToFinish();
@@ -795,6 +795,7 @@
 	int o2_defineSceneAnim(ScriptState *script);
 	int o2_updateSceneAnim(ScriptState *script);
 	int o2_defineRoom(ScriptState *script);
+	int o2_objectChat(ScriptState *script);
 	int o2_countItemInstances(ScriptState *script);
 	int o2_initObject(ScriptState *script);
 	int o2_deinitObject(ScriptState *script);
@@ -906,3 +907,4 @@
 
 #endif
 
+

Modified: scummvm/trunk/engines/kyra/script_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v2.cpp	2008-01-28 22:20:55 UTC (rev 30693)
+++ scummvm/trunk/engines/kyra/script_v2.cpp	2008-01-28 22:21:47 UTC (rev 30694)
@@ -644,6 +644,15 @@
 	return 0;
 }
 
+int KyraEngine_v2::o2_objectChat(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "o2_objectChat(%p) ('%s', %d)", (const void *)script, stackPosString(0), stackPos(1));
+	if (_flags.isTalkie)
+		warning("Unexpected call: o2_objectChat(%p) ('%s', %d)", (const void *)script, stackPosString(0), stackPos(1));
+	else
+		objectChat(stackPosString(0), stackPos(1));
+	return 0;
+}
+
 int KyraEngine_v2::o2_countItemInstances(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "o2_countItemInstances(%p) (%d)", (const void *)script, stackPos(0));
 	uint16 item = stackPos(0);
@@ -823,9 +832,11 @@
 
 int KyraEngine_v2::o2t_setShapeFlag(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "o2t_setShapeFlag(%p) (%d)", (const void *)script, stackPos(0));
-	_newShapeFlag = stackPos(0);
+	if (_flags.isTalkie)
+		_newShapeFlag = stackPos(0);
 	return 0;
 }
 
 } // end of namespace Kyra
 
+

Modified: scummvm/trunk/engines/kyra/text_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/text_v2.cpp	2008-01-28 22:20:55 UTC (rev 30693)
+++ scummvm/trunk/engines/kyra/text_v2.cpp	2008-01-28 22:21:47 UTC (rev 30694)
@@ -126,7 +126,14 @@
 }
 
 int KyraEngine_v2::chatCalcDuration(const char *str) {
-	return MAX<int>(strlen(str) << 3, 120);
+	static const uint8 durationMultiplicator[] = { 16, 14, 12, 10, 8, 8, 7, 6, 5, 4 };
+
+	// TODO / HACK: imlement this correctly
+	const int _configTextspeed = 50;
+
+	int duration = strlen(str);
+	duration *= _flags.isTalkie ? 8 : durationMultiplicator[(_configTextspeed / 10)];
+	return MAX<int>(duration, 120);
 }
 
 void KyraEngine_v2::objectChat(const char *str, int object, int vocHigh, int vocLow) {
@@ -479,3 +486,4 @@
 
 } // end of namespace Kyra
 
+


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list