diff options
-rw-r--r-- | engines/illusions/illusions_duckman.cpp | 9 | ||||
-rw-r--r-- | engines/illusions/illusions_duckman.h | 1 | ||||
-rw-r--r-- | engines/illusions/sequenceopcodes.cpp | 7 | ||||
-rw-r--r-- | engines/illusions/sequenceopcodes.h | 1 |
4 files changed, 18 insertions, 0 deletions
diff --git a/engines/illusions/illusions_duckman.cpp b/engines/illusions/illusions_duckman.cpp index 135bd0b8c7..9f67d6bb93 100644 --- a/engines/illusions/illusions_duckman.cpp +++ b/engines/illusions/illusions_duckman.cpp @@ -1060,6 +1060,7 @@ typedef Common::Functor1Mem<OpCall&, void, IllusionsEngine_Duckman> SpecialCodeF void IllusionsEngine_Duckman::initSpecialCode() { SPECIAL(0x00160002, spcSetCursorHandMode); SPECIAL(0x00160005, spcOpenInventory); + SPECIAL(0x00160010, spcCenterNewspaper); SPECIAL(0x00160014, spcUpdateObject272Sequence); SPECIAL(0x0016001C, spcSetCursorInventoryMode); } @@ -1085,6 +1086,14 @@ void IllusionsEngine_Duckman::spcOpenInventory(OpCall &opCall) { notifyThreadId(opCall._threadId); } +void IllusionsEngine_Duckman::spcCenterNewspaper(OpCall &opCall) { + Control *control = getObjectControl(0x40017); + control->_flags |= 8; + control->_actor->_position.x = 160; + control->_actor->_position.y = 100; + notifyThreadId(opCall._threadId); +} + void IllusionsEngine_Duckman::spcSetCursorInventoryMode(OpCall &opCall) { ARG_BYTE(mode); ARG_BYTE(value); diff --git a/engines/illusions/illusions_duckman.h b/engines/illusions/illusions_duckman.h index 56e6b47a86..3b369b9b75 100644 --- a/engines/illusions/illusions_duckman.h +++ b/engines/illusions/illusions_duckman.h @@ -194,6 +194,7 @@ public: void runSpecialCode(uint32 specialCodeId, OpCall &opCall); void spcSetCursorHandMode(OpCall &opCall); void spcOpenInventory(OpCall &opCall); + void spcCenterNewspaper(OpCall &opCall); void spcSetCursorInventoryMode(OpCall &opCall); void spcUpdateObject272Sequence(OpCall &opCall); diff --git a/engines/illusions/sequenceopcodes.cpp b/engines/illusions/sequenceopcodes.cpp index 92b4e128d6..d508eeac20 100644 --- a/engines/illusions/sequenceopcodes.cpp +++ b/engines/illusions/sequenceopcodes.cpp @@ -75,6 +75,7 @@ void SequenceOpcodes::initOpcodes() { OPCODE(17, opDisappearActor); OPCODE(18, opAppearForeignActor); OPCODE(19, opDisappearForeignActor); + OPCODE(20, opSetNamedPointPosition); OPCODE(21, opMoveDelta); OPCODE(25, opFaceActor); OPCODE(28, opNotifyThreadId1); @@ -251,6 +252,12 @@ void SequenceOpcodes::opDisappearForeignActor(Control *control, OpCall &opCall) foreignControl->disappearActor(); } +void SequenceOpcodes::opSetNamedPointPosition(Control *control, OpCall &opCall) { + ARG_SKIP(2); + ARG_UINT32(namedPointId); + control->_actor->_position = _vm->getNamedPointPosition(namedPointId); +} + void SequenceOpcodes::opMoveDelta(Control *control, OpCall &opCall) { ARG_SKIP(2); ARG_INT16(deltaX); diff --git a/engines/illusions/sequenceopcodes.h b/engines/illusions/sequenceopcodes.h index 384507e0fa..48241e11b1 100644 --- a/engines/illusions/sequenceopcodes.h +++ b/engines/illusions/sequenceopcodes.h @@ -63,6 +63,7 @@ protected: void opDisappearActor(Control *control, OpCall &opCall); void opAppearForeignActor(Control *control, OpCall &opCall); void opDisappearForeignActor(Control *control, OpCall &opCall); + void opSetNamedPointPosition(Control *control, OpCall &opCall); void opMoveDelta(Control *control, OpCall &opCall); void opFaceActor(Control *control, OpCall &opCall); void opNotifyThreadId1(Control *control, OpCall &opCall); |