aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2005-04-09 09:57:54 +0000
committerTravis Howell2005-04-09 09:57:54 +0000
commitdb43946f05b299bfc480bca391106e9750f04c6a (patch)
tree34f7eefab508cd1b5c4be43677d5396f2c7abdbb
parent866e0c8613375f997619b051f5ed81ff94ecd2a2 (diff)
downloadscummvm-rg350-db43946f05b299bfc480bca391106e9750f04c6a.tar.gz
scummvm-rg350-db43946f05b299bfc480bca391106e9750f04c6a.tar.bz2
scummvm-rg350-db43946f05b299bfc480bca391106e9750f04c6a.zip
Add flObject lock/unlock support for HE games.
svn-id: r17474
-rw-r--r--scumm/script_v7he.cpp23
-rw-r--r--scumm/script_v8.cpp4
2 files changed, 18 insertions, 9 deletions
diff --git a/scumm/script_v7he.cpp b/scumm/script_v7he.cpp
index f3127a5314..ec5561edcc 100644
--- a/scumm/script_v7he.cpp
+++ b/scumm/script_v7he.cpp
@@ -510,10 +510,11 @@ void ScummEngine_v70he::o70_getActorRoom() {
}
void ScummEngine_v70he::o70_resourceRoutines() {
- int resid, op;
- op = fetchScriptByte();
+ int objidx, resid, subOp;
- switch (op) {
+ subOp = fetchScriptByte();
+
+ switch (subOp) {
case 100: // SO_LOAD_SCRIPT
resid = pop();
ensureResourceLoaded(rtScript, resid);
@@ -607,7 +608,7 @@ void ScummEngine_v70he::o70_resourceRoutines() {
case 122:
case 123:
case 203:
- debug(5,"stub queueload (%d) resource %d", op, pop());
+ debug(5,"stub queueload (%d) resource %d", subOp, pop());
break;
case 159:
resid = pop();
@@ -627,17 +628,25 @@ void ScummEngine_v70he::o70_resourceRoutines() {
break;
case 233:
resid = pop();
- debug(5,"stub o70_resourceRoutines lock object %d", resid);
+ objidx = getObjectIndex(resid);
+ if (objidx == -1)
+ break;
+ res.lock(rtFlObject, _objs[objidx].fl_object_index);
+ debug(0,"stub o70_resourceRoutines lock object %d", resid);
break;
case 235:
resid = pop();
- debug(5,"stub o70_resourceRoutines unlock object %d", resid);
+ objidx = getObjectIndex(resid);
+ if (objidx == -1)
+ break;
+ res.unlock(rtFlObject, _objs[objidx].fl_object_index);
+ debug(0,"stub o70_resourceRoutines unlock object %d", resid);
break;
case 239:
// Used in airport
break;
default:
- debug(1,"o70_resourceRoutines: default case %d", op);
+ debug(1,"o70_resourceRoutines: default case %d", subOp);
}
}
diff --git a/scumm/script_v8.cpp b/scumm/script_v8.cpp
index cd3e6d7f7e..6e29b88fff 100644
--- a/scumm/script_v8.cpp
+++ b/scumm/script_v8.cpp
@@ -1214,13 +1214,13 @@ void ScummEngine_v8::o8_kernelSetFunctions() {
case 11: { // lockObject
int objidx = getObjectIndex(args[1]);
assert(objidx != -1);
- res.lock(rtFlObject, objidx);
+ res.lock(rtFlObject, _objs[objidx].fl_object_index);
break;
}
case 12: { // unlockObject
int objidx = getObjectIndex(args[1]);
assert(objidx != -1);
- res.unlock(rtFlObject, objidx);
+ res.unlock(rtFlObject, _objs[objidx].fl_object_index);
break;
}
case 13: // remapCostume