[Scummvm-cvs-logs] SF.net SVN: scummvm: [31737] scummvm/trunk/engines/kyra
lordhoto at users.sourceforge.net
lordhoto at users.sourceforge.net
Sun Apr 27 00:13:19 CEST 2008
Revision: 31737
http://scummvm.svn.sourceforge.net/scummvm/?rev=31737&view=rev
Author: lordhoto
Date: 2008-04-26 15:13:19 -0700 (Sat, 26 Apr 2008)
Log Message:
-----------
Implemented opcodes:
- 26: o3_setInventorySlot
- 27: o3_getInventorySlot
- 28: o3_addItemToInventory
Modified Paths:
--------------
scummvm/trunk/engines/kyra/items_v3.cpp
scummvm/trunk/engines/kyra/kyra_v3.h
scummvm/trunk/engines/kyra/script_v3.cpp
Modified: scummvm/trunk/engines/kyra/items_v3.cpp
===================================================================
--- scummvm/trunk/engines/kyra/items_v3.cpp 2008-04-26 21:52:15 UTC (rev 31736)
+++ scummvm/trunk/engines/kyra/items_v3.cpp 2008-04-26 22:13:19 UTC (rev 31737)
@@ -64,6 +64,15 @@
return -1;
}
+int KyraEngine_v3::findFreeInventorySlot() {
+ debugC(9, kDebugLevelMain, "KyraEngine_v3::findFreeInventorySlot()");
+ for (int i = 0; i < 10; ++i) {
+ if (_mainCharacter.inventory[i] == 0xFFFF)
+ return i;
+ }
+ return -1;
+}
+
int KyraEngine_v3::findItem(uint16 sceneId, uint16 id) {
debugC(9, kDebugLevelMain, "KyraEngine_v3::findItem(%u, %u)", sceneId, id);
for (int i = 0; i < 50; ++i) {
Modified: scummvm/trunk/engines/kyra/kyra_v3.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v3.h 2008-04-26 21:52:15 UTC (rev 31736)
+++ scummvm/trunk/engines/kyra/kyra_v3.h 2008-04-26 22:13:19 UTC (rev 31737)
@@ -539,6 +539,8 @@
void makeCharFacingMouse();
+ int findFreeInventorySlot();
+
// talk object
struct TalkObject {
char filename[13];
@@ -704,6 +706,9 @@
int o3_setCharacterAnimFrameFromFacing(ScriptState *script);
int o3_showBadConscience(ScriptState *script);
int o3_hideBadConscience(ScriptState *script);
+ int o3_setInventorySlot(ScriptState *script);
+ int o3_getInventorySlot(ScriptState *script);
+ int o3_addItemToInventory(ScriptState *script);
int o3_addItemToCurScene(ScriptState *script);
int o3_objectChat(ScriptState *script);
int o3_checkForItem(ScriptState *script);
Modified: scummvm/trunk/engines/kyra/script_v3.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v3.cpp 2008-04-26 21:52:15 UTC (rev 31736)
+++ scummvm/trunk/engines/kyra/script_v3.cpp 2008-04-26 22:13:19 UTC (rev 31737)
@@ -185,6 +185,31 @@
return 0;
}
+int KyraEngine_v3::o3_setInventorySlot(ScriptState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_setInventorySlot(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
+ const int slot = MAX<int16>(0, MIN<int16>(10, stackPos(0)));
+ return (_mainCharacter.inventory[slot] = stackPos(1));
+}
+
+int KyraEngine_v3::o3_getInventorySlot(ScriptState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_getInventorySlot(%p) (%d)", (const void *)script, stackPos(0));
+ return _mainCharacter.inventory[stackPos(0)];
+}
+
+int KyraEngine_v3::o3_addItemToInventory(ScriptState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_addItemToInventory(%p) (%d)", (const void *)script, stackPos(0));
+ int slot = findFreeInventorySlot();
+ if (slot >= 0) {
+ _mainCharacter.inventory[slot] = stackPos(0);
+ if (_inventoryState) {
+ _screen->hideMouse();
+ redrawInventory(0);
+ _screen->showMouse();
+ }
+ }
+ return slot;
+}
+
int KyraEngine_v3::o3_addItemToCurScene(ScriptState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v3::o3_addItemToCurScene(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
const uint16 item = stackPos(0);
@@ -1252,11 +1277,11 @@
// 0x18
OpcodeUnImpl();
OpcodeUnImpl();
- OpcodeUnImpl();
- OpcodeUnImpl();
+ Opcode(o3_setInventorySlot);
+ Opcode(o3_getInventorySlot);
// 0x1c
+ Opcode(o3_addItemToInventory);
OpcodeUnImpl();
- OpcodeUnImpl();
Opcode(o3_addItemToCurScene);
Opcode(o3_objectChat);
// 0x20
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