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

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Fri Mar 28 01:13:43 CET 2008


Revision: 31279
          http://scummvm.svn.sourceforge.net/scummvm/?rev=31279&view=rev
Author:   lordhoto
Date:     2008-03-27 17:13:43 -0700 (Thu, 27 Mar 2008)

Log Message:
-----------
Implemented opcodes:
 - 38: o2_countItemsInScene
 - 57: o2_setTimerDelay
 - 84: o2_getSceneExitToFacing
 - 137: o2_removeItemFromScene

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

Modified: scummvm/trunk/engines/kyra/kyra_v2.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v2.h	2008-03-28 00:07:40 UTC (rev 31278)
+++ scummvm/trunk/engines/kyra/kyra_v2.h	2008-03-28 00:13:43 UTC (rev 31279)
@@ -984,6 +984,7 @@
 	int o2_defineItem(ScriptState *script);
 	int o2_removeItemFromInventory(ScriptState *script);
 	int o2_countItemInInventory(ScriptState *script);
+	int o2_countItemsInScene(ScriptState *script);
 	int o2_queryGameFlag(ScriptState *script);
 	int o2_resetGameFlag(ScriptState *script);
 	int o2_setGameFlag(ScriptState *script);
@@ -1000,6 +1001,7 @@
 	//int o2_playSoundEffect(ScriptState *script);
 	int o2_delaySecs(ScriptState *script);
 	int o2_delay(ScriptState *script);
+	int o2_setTimerDelay(ScriptState *script);
 	int o2_setScaleTableItem(ScriptState *script);
 	int o2_setDrawLayerTableItem(ScriptState *script);
 	int o2_setCharPalEntry(ScriptState *script);
@@ -1022,6 +1024,7 @@
 	int o2_switchScene(ScriptState *script);
 	int o2_getShapeFlag1(ScriptState *script);
 	int o2_setPathfinderFlag(ScriptState *script);
+	int o2_getSceneExitToFacing(ScriptState *script);
 	int o2_setLayerFlag(ScriptState *script);
 	int o2_setZanthiaPos(ScriptState *script);
 	int o2_loadMusicTrack(ScriptState *script);
@@ -1066,6 +1069,7 @@
 	int o2_getColorCodeValue(ScriptState *script);
 	int o2_setColorCodeValue(ScriptState *script);
 	int o2_countItemInstances(ScriptState *script);
+	int o2_removeItemFromScene(ScriptState *script);
 	int o2_initObject(ScriptState *script);
 	int o2_npcChat(ScriptState *script);
 	int o2_deinitObject(ScriptState *script);

Modified: scummvm/trunk/engines/kyra/script_v2.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v2.cpp	2008-03-28 00:07:40 UTC (rev 31278)
+++ scummvm/trunk/engines/kyra/script_v2.cpp	2008-03-28 00:13:43 UTC (rev 31279)
@@ -502,6 +502,16 @@
 	return count;
 }
 
+int KyraEngine_v2::o2_countItemsInScene(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_countItemsInScene(%p) (%d)", (const void *)script, stackPos(0));
+	int count = 0;
+	for (int i = 0; i < 30; ++i) {
+		if (_itemList[i].sceneId == stackPos(0) && _itemList[i].id != 0xFFFF)
+			++count;
+	}
+	return count;
+}
+
 int KyraEngine_v2::o2_queryGameFlag(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_queryGameFlag(%p) (%d)", (const void *)script, stackPos(0));
 	return queryGameFlag(stackPos(0));
@@ -625,6 +635,12 @@
 	return 0;
 }
 
+int KyraEngine_v2::o2_setTimerDelay(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_setTimerDelay(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
+	_timer->setDelay(stackPos(0), stackPos(1));
+	return 0;
+}
+
 int KyraEngine_v2::o2_setScaleTableItem(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_setScaleTableItem(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
 	setScaleTableItem(stackPos(0), stackPos(1));
@@ -826,6 +842,22 @@
 	return 0;
 }
 
+int KyraEngine_v2::o2_getSceneExitToFacing(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_getSceneExitToFacing(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
+	const int scene = stackPos(0);
+	const int facing = stackPos(1);
+
+	if (facing == 0)
+		return (int16)_sceneList[scene].exit1;
+	else if (facing == 2)
+		return (int16)_sceneList[scene].exit2;
+	else if (facing == 4)
+		return (int16)_sceneList[scene].exit3;
+	else if (facing == 6)
+		return (int16)_sceneList[scene].exit4;
+	return -1;
+}
+
 int KyraEngine_v2::o2_setLayerFlag(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_setLayerFlag(%p) (%d)", (const void *)script, stackPos(0));
 	int layer = stackPos(0);
@@ -1344,6 +1376,17 @@
 	return count;
 }
 
+int KyraEngine_v2::o2_removeItemFromScene(ScriptState *script) {
+	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_removeItemFromScene(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
+	const int scene = stackPos(0);
+	const uint16 item = stackPos(1);
+	for (int i = 0; i < 30; ++i) {
+		if (_itemList[i].sceneId == scene && _itemList[i].id == item)
+			_itemList[i].id = 0xFFFF;
+	}
+	return 0;
+}
+
 int KyraEngine_v2::o2_initObject(ScriptState *script) {
 	debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_initObject(%p) (%d)", (const void *)script, stackPos(0));
 	initTalkObject(stackPos(0));
@@ -1781,7 +1824,7 @@
 		// 0x24
 		Opcode(o2_removeItemFromInventory),
 		Opcode(o2_countItemInInventory),
-		OpcodeUnImpl(),
+		Opcode(o2_countItemsInScene),
 		Opcode(o2_queryGameFlag),
 		// 0x28
 		Opcode(o2_resetGameFlag),
@@ -1805,7 +1848,7 @@
 		Opcode(o2_delay),
 		// 0x38
 		Opcode(o2_dummy),
-		OpcodeUnImpl(),
+		Opcode(o2_setTimerDelay),
 		Opcode(o2_setScaleTableItem),
 		Opcode(o2_setDrawLayerTableItem),
 		// 0x3c
@@ -1839,7 +1882,7 @@
 		Opcode(o2_getShapeFlag1),
 		Opcode(o2_setPathfinderFlag),
 		// 0x54
-		OpcodeUnImpl(),
+		Opcode(o2_getSceneExitToFacing),
 		Opcode(o2_setLayerFlag),
 		Opcode(o2_setZanthiaPos),
 		Opcode(o2_loadMusicTrack),
@@ -1905,7 +1948,7 @@
 		Opcode(o2_setColorCodeValue),
 		// 0x88
 		Opcode(o2_countItemInstances),
-		OpcodeUnImpl(),
+		Opcode(o2_removeItemFromScene),
 		Opcode(o2_initObject),
 		Opcode(o2_npcChat),
 		// 0x8c


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