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); | 
