aboutsummaryrefslogtreecommitdiff
path: root/saga/sfuncs.cpp
diff options
context:
space:
mode:
authorAndrew Kurushin2005-04-24 15:17:38 +0000
committerAndrew Kurushin2005-04-24 15:17:38 +0000
commita909052c8d0f5b87c2a7602f2cc64237bd381343 (patch)
treea8d5a57c1177b684e28d2b34d5bd84ce2c87ce49 /saga/sfuncs.cpp
parentce3cd9b194633e97eabf693f66498335f1f7557d (diff)
downloadscummvm-rg350-a909052c8d0f5b87c2a7602f2cc64237bd381343.tar.gz
scummvm-rg350-a909052c8d0f5b87c2a7602f2cc64237bd381343.tar.bz2
scummvm-rg350-a909052c8d0f5b87c2a7602f2cc64237bd381343.zip
fixed object frawing
implemented sfGetObjImage, sfSetObjImage, sfSetObjName svn-id: r17789
Diffstat (limited to 'saga/sfuncs.cpp')
-rw-r--r--saga/sfuncs.cpp71
1 files changed, 32 insertions, 39 deletions
diff --git a/saga/sfuncs.cpp b/saga/sfuncs.cpp
index 6b5f1fe1ab..434873069c 100644
--- a/saga/sfuncs.cpp
+++ b/saga/sfuncs.cpp
@@ -67,9 +67,9 @@ void Script::setupScriptFuncList(void) {
OPCODE(sfFaceTowards),
OPCODE(sfSetFollower),
OPCODE(sfScriptGotoScene),
- OPCODE(SF_setObjImage),
- OPCODE(SF_setObjName),
- OPCODE(SF_getObjImage),
+ OPCODE(sfSetObjImage),
+ OPCODE(sfSetObjName),
+ OPCODE(sfGetObjImage),
OPCODE(SF_getNumber),
OPCODE(sfScriptOpenDoor),
OPCODE(sfScriptCloseDoor),
@@ -521,52 +521,46 @@ void Script::sfScriptGotoScene(SCRIPTFUNC_PARAMS) {
}
// Script function #17 (0x11)
-void Script::SF_setObjImage(SCRIPTFUNC_PARAMS) {
- error("SF_setObjImage Not implemented");
-/* int16 obj_param = getSWord(thread->pop());
- int16 sprite_param = getSWord(thread->pop());
-
-
- int index = obj_param & 0x1FFF;
+// Param1: object id
+// Param2: sprite index
+void Script::sfSetObjImage(SCRIPTFUNC_PARAMS) {
+ uint16 objectId;
+ uint16 spriteId;
+ ObjectData *obj;
- if (index >= ARRAYSIZE(ObjectTable)) {
- return FAILURE;
- }
+ objectId = thread->pop();
+ spriteId = thread->pop();
- ObjectTable[index].spritelistRn = sprite_param + 9;
- _vm->_interface->draw();
-*/
+ obj = _vm->_actor->getObj(objectId);
+ obj->spriteListResourceId = OBJ_SPRITE_BASE + spriteId;
+ _vm->_interface->refreshInventory();
}
// Script function #18 (0x12)
-void Script::SF_setObjName(SCRIPTFUNC_PARAMS) {
- error("SF_setObjName Not implemented");
-
-/* int obj_param = getSWord(thread->pop());
- int name_param = getSWord(thread->pop());
-
- int index = obj_param & 0x1FFF;
+// Param1: object id
+// Param2: name index
+void Script::sfSetObjName(SCRIPTFUNC_PARAMS) {
+ uint16 objectId;
+ uint16 nameIdx;
+ ObjectData *obj;
- if (index >= ARRAYSIZE(ObjectTable)) {
- return FAILURE;
- }
+ objectId = thread->pop();
+ nameIdx = thread->pop();
- ObjectTable[index].nameIndex = name_param;*/
+ obj = _vm->_actor->getObj(objectId);
+ obj->nameIndex = nameIdx;
}
// Script function #19 (0x13)
-void Script::SF_getObjImage(SCRIPTFUNC_PARAMS) {
- error("SF_getObjImage Not implemented");
-
-/* int param = getSWord(thread->pop());
- int index = param & 0x1FFF;
+// Param1: object id
+void Script::sfGetObjImage(SCRIPTFUNC_PARAMS) {
+ uint16 objectId;
+ ObjectData *obj;
- if (index >= ARRAYSIZE(ObjectTable)) {
- thread->retVal = 0;
- return FAILURE;
- }
+ objectId = thread->pop();
- thread->retVal = ObjectTable[index].spritelistRn;*/
+ obj = _vm->_actor->getObj(objectId);
+ thread->_returnValue = obj->spriteListResourceId - OBJ_SPRITE_BASE;
}
// Script function #20 (0x14)
@@ -702,7 +696,6 @@ void Script::sfSetActorState(SCRIPTFUNC_PARAMS) {
}
actor->currentAction = currentAction;
actor->actorFlags &= ~kActorBackwards;
-
}
// Script function #30 (0x1E) nonblocking
@@ -754,7 +747,7 @@ void Script::sfDropObject(SCRIPTFUNC_PARAMS) {
}
obj->sceneNumber = _vm->_scene->currentSceneNumber();
- obj->spriteListResourceId = 9 + spriteId;
+ obj->spriteListResourceId = OBJ_SPRITE_BASE + spriteId;
obj->location.x = x;
obj->location.y = y;
}