aboutsummaryrefslogtreecommitdiff
path: root/engines/illusions/sequenceopcodes.cpp
diff options
context:
space:
mode:
authorjohndoe1232014-04-08 19:43:17 +0200
committerEugene Sandulenko2018-07-20 06:43:33 +0000
commit67366aa04b723fadec300cc6ce1d5c6ee9241af7 (patch)
treebd4783f6b6ebb6c25d52a1349a60c2fd10034e0b /engines/illusions/sequenceopcodes.cpp
parent3f15233f78a264e45ce74ecd2db9ed3119b1b654 (diff)
downloadscummvm-rg350-67366aa04b723fadec300cc6ce1d5c6ee9241af7.tar.gz
scummvm-rg350-67366aa04b723fadec300cc6ce1d5c6ee9241af7.tar.bz2
scummvm-rg350-67366aa04b723fadec300cc6ce1d5c6ee9241af7.zip
ILLUSIONS: More work on Duckman
Diffstat (limited to 'engines/illusions/sequenceopcodes.cpp')
-rw-r--r--engines/illusions/sequenceopcodes.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/engines/illusions/sequenceopcodes.cpp b/engines/illusions/sequenceopcodes.cpp
index f020423a1a..e00bb23722 100644
--- a/engines/illusions/sequenceopcodes.cpp
+++ b/engines/illusions/sequenceopcodes.cpp
@@ -74,11 +74,13 @@ void SequenceOpcodes::initOpcodes() {
OPCODE(17, opDisappearActor);
OPCODE(18, opAppearForeignActor);
OPCODE(19, opDisappearForeignActor);
+ OPCODE(21, opMoveDelta);
OPCODE(28, opNotifyThreadId1);
OPCODE(29, opSetPathCtrY);
OPCODE(33, opSetPathWalkPoints);
OPCODE(35, opSetScale);
OPCODE(36, opSetScaleLayer);
+ OPCODE(37, opDeactivatePathWalkRects);
OPCODE(38, opSetPathWalkRects);
OPCODE(39, opSetPriority);
OPCODE(40, opSetPriorityLayer);
@@ -243,6 +245,14 @@ void SequenceOpcodes::opDisappearForeignActor(Control *control, OpCall &opCall)
foreignControl->disappearActor();
}
+void SequenceOpcodes::opMoveDelta(Control *control, OpCall &opCall) {
+ ARG_SKIP(2);
+ ARG_INT16(deltaX);
+ ARG_INT16(deltaY);
+ control->_actor->_position.x += deltaX;
+ control->_actor->_position.y += deltaY;
+}
+
void SequenceOpcodes::opNotifyThreadId1(Control *control, OpCall &opCall) {
_vm->notifyThreadId(control->_actor->_notifyThreadId1);
}
@@ -274,10 +284,14 @@ void SequenceOpcodes::opSetScaleLayer(Control *control, OpCall &opCall) {
control->setActorScale(scale);
}
+void SequenceOpcodes::opDeactivatePathWalkRects(Control *control, OpCall &opCall) {
+ control->_actor->_flags &= ~0x0010;
+}
+
void SequenceOpcodes::opSetPathWalkRects(Control *control, OpCall &opCall) {
ARG_INT16(pathWalkRectsIndex);
BackgroundResource *bgRes = _vm->_backgroundItems->getActiveBgResource();
- control->_actor->_flags |= 0x10;
+ control->_actor->_flags |= 0x0010;
// TODO control->_actor->_pathWalkRects = bgRes->getPathWalkRects(pathWalkRectsIndex - 1);
}