diff options
author | Torbjörn Andersson | 2004-11-07 14:15:41 +0000 |
---|---|---|
committer | Torbjörn Andersson | 2004-11-07 14:15:41 +0000 |
commit | c55ff57fc6111a3e67c598a3cca579392ce70d16 (patch) | |
tree | 20e65c0dea917eca54f49dc28e16f6bf4c3e3e57 /saga/sfuncs.cpp | |
parent | 74704a4d95d7a0040916ccad264ffff76eef7d40 (diff) | |
download | scummvm-rg350-c55ff57fc6111a3e67c598a3cca579392ce70d16.tar.gz scummvm-rg350-c55ff57fc6111a3e67c598a3cca579392ce70d16.tar.bz2 scummvm-rg350-c55ff57fc6111a3e67c598a3cca579392ce70d16.zip |
Initial inventory support.
svn-id: r15723
Diffstat (limited to 'saga/sfuncs.cpp')
-rw-r--r-- | saga/sfuncs.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/saga/sfuncs.cpp b/saga/sfuncs.cpp index b22de449a8..e1e0450e89 100644 --- a/saga/sfuncs.cpp +++ b/saga/sfuncs.cpp @@ -31,6 +31,7 @@ #include "saga/console.h" #include "saga/interface.h" #include "saga/music.h" +#include "saga/objectdata.h" #include "saga/sound.h" #include "saga/sndres.h" @@ -155,23 +156,28 @@ int Script::SF_sleep(SCRIPTFUNC_PARAMS) { // Script function #2 (0x02) int Script::SF_takeObject(SCRIPTFUNC_PARAMS) { SDataWord_T param = thread->pop(); + int index = param & 0x1FFF; + + if (ObjectTable[index].sceneIndex != -1) { + ObjectTable[index].sceneIndex = -1; + _vm->_interface->addToInventory(index); + } - debug(1, "stub: SF_takeObject(%d)", param); return SUCCESS; } // Script function #3 (0x03) // Check if an object is carried. int Script::SF_objectIsCarried(SCRIPTFUNC_PARAMS) { - // INCOMPLETE - SDataWord_T param1; - param1 = thread->pop(); - - // FIXME: Incomplete, but returning 0 assures that the fair start - // script will run completely. + SDataWord_T param = thread->pop(); + int index = param & 0x1FFF; - thread->retVal = 0; + if (index >= ARRAYSIZE(ObjectTable)) { + thread->retVal = 0; + return FAILURE; + } + thread->retVal = (ObjectTable[index].sceneIndex == -1) ? 1 : 0; return SUCCESS; } |