From abf78e07eee50df3bd588c924d3c2ddf35a0e956 Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Tue, 20 Sep 2011 09:39:24 +0000 Subject: NEVERHOOD: Replace InsertKlayman macros with template functions (still weird but nicer) --- engines/neverhood/gamemodule.cpp | 4 +-- engines/neverhood/klayman.cpp | 23 +++----------- engines/neverhood/klayman.h | 10 ++---- engines/neverhood/module1000.cpp | 30 +++++++++--------- engines/neverhood/module1200.cpp | 16 +++++----- engines/neverhood/module1300.cpp | 40 ++++++++++++------------ engines/neverhood/module1400.cpp | 30 +++++++++--------- engines/neverhood/module1700.cpp | 12 ++++---- engines/neverhood/module2000.cpp | 10 +++--- engines/neverhood/module2200.cpp | 66 ++++++++++++++++++++-------------------- engines/neverhood/scene.cpp | 4 +++ engines/neverhood/scene.h | 37 ++++++++++++++++++---- 12 files changed, 147 insertions(+), 135 deletions(-) (limited to 'engines') diff --git a/engines/neverhood/gamemodule.cpp b/engines/neverhood/gamemodule.cpp index 8cdd98ed32..3beb32580f 100644 --- a/engines/neverhood/gamemodule.cpp +++ b/engines/neverhood/gamemodule.cpp @@ -270,8 +270,8 @@ void GameModule::startup() { createModule(1000, -1); #endif #if 1 - _vm->gameState().sceneNum = 12; - createModule(3000, -1); + _vm->gameState().sceneNum = 1; + createModule(1000, -1); #endif } diff --git a/engines/neverhood/klayman.cpp b/engines/neverhood/klayman.cpp index b5d266e30f..4d4d9c4aa4 100644 --- a/engines/neverhood/klayman.cpp +++ b/engines/neverhood/klayman.cpp @@ -2115,19 +2115,14 @@ uint32 KmScene1001::handleMessage44FA00(int messageNum, const MessageParam ¶ // KmScene1002 -KmScene1002::KmScene1002(NeverhoodEngine *vm, Entity *parentScene, int16 x, int16 y) - : Klayman(vm, parentScene, x, y, 1000, 1000), _otherSprite(NULL), +KmScene1002::KmScene1002(NeverhoodEngine *vm, Entity *parentScene, int16 x, int16 y, Sprite *class599, Sprite *ssLadderArch) + : Klayman(vm, parentScene, x, y, 1000, 1000), _otherSprite(NULL), _class599(class599), _ssLadderArch(ssLadderArch), _status(0) { setKlaymanTable1(); } -void KmScene1002::init(Sprite *class599, Sprite *ssLadderArch) { - _class599 = class599; - _ssLadderArch = ssLadderArch; -} - void KmScene1002::xUpdate() { if (_x >= 250 && _x <= 435 && _y >= 420) { if (_status == 0) { @@ -2694,18 +2689,14 @@ void KmScene1004::sub478170() { // KmScene1201 -KmScene1201::KmScene1201(NeverhoodEngine *vm, Entity *parentScene, int16 x, int16 y) - : Klayman(vm, parentScene, x, y, 1000, 1000), _countdown(0) { +KmScene1201::KmScene1201(NeverhoodEngine *vm, Entity *parentScene, int16 x, int16 y, Entity *class464) + : Klayman(vm, parentScene, x, y, 1000, 1000), _class464(class464), _countdown(0) { // TODO setKlaymanTable(dword_4AEF10, 3); _flagF6 = true; } -void KmScene1201::init(Entity *class464) { - _class464 = class464; -} - uint32 KmScene1201::xHandleMessage(int messageNum, const MessageParam ¶m) { switch (messageNum) { case 0x4001: @@ -3878,7 +3869,7 @@ void KmScene2001::sub440270() { SetMessageHandler(&KmScene2001::handleMessage4401A0); } -KmScene2201::KmScene2201(NeverhoodEngine *vm, Entity *parentScene, int16 x, int16 y) +KmScene2201::KmScene2201(NeverhoodEngine *vm, Entity *parentScene, int16 x, int16 y, NRect *clipRects, int clipRectsCount) // TODO: NRect *rect1, int16 unk in Klayman ctor : Klayman(vm, parentScene, x, y, 1000, 1000) { @@ -3886,10 +3877,6 @@ KmScene2201::KmScene2201(NeverhoodEngine *vm, Entity *parentScene, int16 x, int1 _flagF6 = false; } -void KmScene2201::init(NRect *clipRects, int clipRectsCount) { - // TODO -} - uint32 KmScene2201::xHandleMessage(int messageNum, const MessageParam ¶m) { switch (messageNum) { case 0x4001: diff --git a/engines/neverhood/klayman.h b/engines/neverhood/klayman.h index 3f15b8fb28..a4d355726b 100644 --- a/engines/neverhood/klayman.h +++ b/engines/neverhood/klayman.h @@ -44,7 +44,6 @@ struct KlaymanTableItem { class Klayman : public AnimatedSprite { public: Klayman(NeverhoodEngine *vm, Entity *parentScene, int16 x, int16 y, int surfacePriority = 1000, int objectPriority = 1000, NRectArray *clipRects = NULL); - void init() { } void update(); @@ -262,8 +261,7 @@ protected: class KmScene1002 : public Klayman { public: - KmScene1002(NeverhoodEngine *vm, Entity *parentScene, int16 x, int16 y); - void init(Sprite *class599, Sprite *ssLadderArch); + KmScene1002(NeverhoodEngine *vm, Entity *parentScene, int16 x, int16 y, Sprite *class599, Sprite *ssLadderArch); protected: Sprite *_class599; Sprite *_ssLadderArch; @@ -309,8 +307,7 @@ protected: class KmScene1201 : public Klayman { public: - KmScene1201(NeverhoodEngine *vm, Entity *parentScene, int16 x, int16 y); - void init(Entity *class464); + KmScene1201(NeverhoodEngine *vm, Entity *parentScene, int16 x, int16 y, Entity *class464); protected: Entity *_class464; int _countdown; @@ -431,8 +428,7 @@ protected: class KmScene2201 : public Klayman { public: - KmScene2201(NeverhoodEngine *vm, Entity *parentScene, int16 x, int16 y); - void init(NRect *clipRects, int clipRectsCount); + KmScene2201(NeverhoodEngine *vm, Entity *parentScene, int16 x, int16 y, NRect *clipRects, int clipRectsCount); protected: uint32 xHandleMessage(int messageNum, const MessageParam ¶m); }; diff --git a/engines/neverhood/module1000.cpp b/engines/neverhood/module1000.cpp index e160a7184d..14bc4a41ea 100644 --- a/engines/neverhood/module1000.cpp +++ b/engines/neverhood/module1000.cpp @@ -338,7 +338,7 @@ Scene1001::Scene1001(NeverhoodEngine *vm, Module *parentModule, int which) SetMessageHandler(&Scene1001::handleMessage); - _vm->_collisionMan->setHitRects(0x004B4860); + setHitRects(0x004B4860); _surfaceFlag = false; setBackground(0x4086520E); setPalette(0x4086520E); @@ -346,24 +346,24 @@ Scene1001::Scene1001(NeverhoodEngine *vm, Module *parentModule, int which) if (which < 0) { setRectList(0x004B49F0); - InsertKlayman(KmScene1001, 200, 433); + insertKlayman(200, 433); setMessageList(0x004B4888); } else if (which == 1) { setRectList(0x004B49F0); - InsertKlayman(KmScene1001, 640, 433); + insertKlayman(640, 433); setMessageList(0x004B4898); } else if (which == 2) { setRectList(0x004B49F0); if (getGlobalVar(0xC0418A02)) { - InsertKlayman(KmScene1001, 390, 433); + insertKlayman(390, 433); _klayman->setDoDeltaX(1); } else { - InsertKlayman(KmScene1001, 300, 433); + insertKlayman(300, 433); } setMessageList(0x004B4970); } else { setRectList(0x004B4A00); - InsertKlayman(KmScene1001, 200, 433); + insertKlayman(200, 433); setMessageList(0x004B4890); } @@ -1317,7 +1317,7 @@ Scene1002::Scene1002(NeverhoodEngine *vm, Module *parentModule, int which) SetUpdateHandler(&Scene1002::update); SetMessageHandler(&Scene1002::handleMessage); - _vm->_collisionMan->setHitRects(0x004B4138); + setHitRects(0x004B4138); _surfaceFlag = true; @@ -1338,28 +1338,28 @@ Scene1002::Scene1002(NeverhoodEngine *vm, Module *parentModule, int which) if (which < 0) { if (_vm->_gameState.field2 == 0) { - InsertKlaymanInitArgs(KmScene1002, 90, 226, (_class599, _ssLadderArch)); + insertKlayman(90, 226, _class599, _ssLadderArch); _class478 = insertSprite(_klayman); setMessageList(0x004B4270); _klayman->setClipRect(31, 0, _ssLadderArchPart2->getDrawRect().x2(), _ssLadderArchPart3->getDrawRect().y2()); _class478->getSurface()->getClipRect() = _klayman->getSurface()->getClipRect(); _klayman->setRepl(64, 0); } else { - InsertKlaymanInitArgs(KmScene1002, 379, 435, (_class599, _ssLadderArch)); + insertKlayman(379, 435, _class599, _ssLadderArch); _class478 = insertSprite(_klayman); setMessageList(0x004B4270); _klayman->setClipRect(_ssLadderArch->getDrawRect().x, 0, _ssLadderArchPart2->getDrawRect().x2(), _ssLadderArchPart1->getDrawRect().y2()); _class478->setClipRect(_klayman->getClipRect()); } } else if (which == 1) { - InsertKlaymanInitArgs(KmScene1002, 650, 435, (_class599, _ssLadderArch)); + insertKlayman(650, 435, _class599, _ssLadderArch); _class478 = insertSprite(_klayman); setMessageList(0x004B4478); _klayman->setClipRect(_ssLadderArch->getDrawRect().x, 0, _ssLadderArchPart2->getDrawRect().x2(), _ssLadderArchPart1->getDrawRect().y2()); _class478->setClipRect(_klayman->getClipRect()); _vm->_gameState.field2 = 1; } else if (which == 2) { - InsertKlaymanInitArgs(KmScene1002, 68, 645, (_class599, _ssLadderArch)); + insertKlayman(68, 645, _class599, _ssLadderArch); _class478 = insertSprite(_klayman); setMessageList(0x004B4298); _klayman->setClipRect(_ssLadderArch->getDrawRect().x, 0, _ssLadderArchPart2->getDrawRect().x2(), _ssLadderArchPart1->getDrawRect().y2()); @@ -1367,7 +1367,7 @@ Scene1002::Scene1002(NeverhoodEngine *vm, Module *parentModule, int which) _vm->_gameState.field2 = 1; sendMessage(_klayman, 0x4820, 0); } else { - InsertKlaymanInitArgs(KmScene1002, 90, 226, (_class599, _ssLadderArch)); + insertKlayman(90, 226, _class599, _ssLadderArch); _class478 = insertSprite(_klayman); setMessageList(0x004B4470); _klayman->setClipRect(31, 0, _ssLadderArchPart2->getDrawRect().x2(), _ssLadderArchPart3->getDrawRect().y2()); @@ -1642,15 +1642,15 @@ Scene1004::Scene1004(NeverhoodEngine *vm, Module *parentModule, int which) if (which < 0) { setRectList(0x004B7C70); - InsertKlayman(KmScene1004, 330, 327); + insertKlayman(330, 327); setMessageList(0x004B7C18); } else if (which == 1) { setRectList(0x004B7C70); - InsertKlayman(KmScene1004, 330, 327); + insertKlayman(330, 327); setMessageList(0x004B7C08); } else { loadDataResource(0x01900A04); - InsertKlayman(KmScene1004, _dataResource.getPoint(0x80052A29).x, 27); + insertKlayman(_dataResource.getPoint(0x80052A29).x, 27); setMessageList(0x004B7BF0); } diff --git a/engines/neverhood/module1200.cpp b/engines/neverhood/module1200.cpp index 62462fc649..9c84950a2b 100644 --- a/engines/neverhood/module1200.cpp +++ b/engines/neverhood/module1200.cpp @@ -753,7 +753,7 @@ Scene1201::Scene1201(NeverhoodEngine *vm, Module *parentModule, int which) SetUpdateHandler(&Scene1201::update); SetMessageHandler(&Scene1201::handleMessage); - _vm->_collisionMan->setHitRects(0x004AEBD0); + setHitRects(0x004AEBD0); _surfaceFlag = true; @@ -797,29 +797,29 @@ Scene1201::Scene1201(NeverhoodEngine *vm, Module *parentModule, int which) debug("Scene1201: which = %d", which); if (which < 0) { - InsertKlaymanInitArgs(KmScene1201, 364, 333, (class464)); + insertKlayman(364, 333, class464); setMessageList(0x004AEC08); } else if (which == 3) { - InsertKlaymanInitArgs(KmScene1201, 400, 329, (class464)); + insertKlayman(400, 329, class464); setMessageList(0x004AEC08); } else if (which == 2) { if (getGlobalVar(0x0A310817) && !getGlobalVar(0x0A18CA33)) { - InsertKlaymanInitArgs(KmScene1201, 374, 333, (class464)); + insertKlayman(374, 333, class464); setMessageList(0x004AEC08); } else { - InsertKlaymanInitArgs(KmScene1201, 640, 329, (class464)); + insertKlayman(640, 329, class464); setMessageList(0x004AEC20); } } else if (which == 1) { if (getGlobalVar(0xC0418A02)) { - InsertKlaymanInitArgs(KmScene1201, 364, 333, (class464)); + insertKlayman(364, 333, class464); _klayman->setDoDeltaX(1); } else { - InsertKlaymanInitArgs(KmScene1201, 246, 333, (class464)); + insertKlayman(246, 333, class464); } setMessageList(0x004AEC30); } else { - InsertKlaymanInitArgs(KmScene1201, 0, 336, (class464)); + insertKlayman(0, 336, class464); setMessageList(0x004AEC10); } diff --git a/engines/neverhood/module1300.cpp b/engines/neverhood/module1300.cpp index 48a8b54e66..4876135cef 100644 --- a/engines/neverhood/module1300.cpp +++ b/engines/neverhood/module1300.cpp @@ -417,7 +417,7 @@ Scene1302::Scene1302(NeverhoodEngine *vm, Module *parentModule, int which) : Scene(vm, parentModule, true), _soundResource(vm) { SetMessageHandler(&Scene1302::handleMessage); - _vm->_collisionMan->setHitRects(0x004B0858); + setHitRects(0x004B0858); setRectList(0x004B0A38); setBackground(0x420643C4); @@ -441,10 +441,10 @@ Scene1302::Scene1302(NeverhoodEngine *vm, Module *parentModule, int which) _ssFence->setClipRect(0, 0, 640, _sprite1->getDrawRect().y2()); if (which < 0) { - InsertKlaymanInitArgs(KmScene1002, 380, 364, (_class595, NULL)); + insertKlayman(380, 364, _class595, (Sprite*)NULL); setMessageList(0x004B0868); } else { - InsertKlaymanInitArgs(KmScene1002, 293, 330, (_class595, NULL)); + insertKlayman(293, 330, _class595, (Sprite*)NULL); setMessageList(0x004B0870); } @@ -649,7 +649,7 @@ Scene1303::Scene1303(NeverhoodEngine *vm, Module *parentModule, int which) _sprite1 = insertStaticSprite(0xA014216B, 1100); - InsertKlayman(KmScene1303, 207, 332); + insertKlayman(207, 332); setMessageList(0x004AF9A0); _klayman->setClipRect(_sprite1->getDrawRect().x, 0, 640, 480); @@ -730,10 +730,10 @@ Scene1304::Scene1304(NeverhoodEngine *vm, Module *parentModule, int which) insertStaticSprite(0x090AF033, 1100); if (which < 0) { - InsertKlayman(KmScene1304, 217, 347); + insertKlayman(217, 347); setMessageList(0x004B90E8); } else { - InsertKlayman(KmScene1304, 100, 347); + insertKlayman(100, 347); setMessageList(0x004B90F0); } @@ -778,10 +778,10 @@ Scene1305::Scene1305(NeverhoodEngine *vm, Module *parentModule, int which) insertMouse433(0x01B60280); if (which < 0) { - InsertKlayman(KmScene1305, 212, 441); + insertKlayman(212, 441); setMessageList(0x004B6E40); } else { - InsertKlayman(KmScene1305, 212, 441); + insertKlayman(212, 441); setMessageList(0x004B6E48); } @@ -913,45 +913,45 @@ Scene1306::Scene1306(NeverhoodEngine *vm, Module *parentModule, int which) insertStaticSprite(0x00042313, 1100); if (which < 0) { - InsertKlayman(KmScene1306, 380, 440); + insertKlayman(380, 440); setMessageList(0x004AFAD0); sendMessage(this, 0x2000, 0); _vm->_collisionMan->addSprite(_asTape); } else if (which == 1) { - InsertKlayman(KmScene1306, 136, 440); + insertKlayman(136, 440); sendMessage(_klayman, 0x2000, 1); setMessageList(0x004AFAF0); sendMessage(this, 0x2000, 1); _vm->_collisionMan->addSprite(_asTape); } else if (which == 2) { if (getGlobalVar(0xC0418A02)) { - InsertKlayman(KmScene1306, 515, 440); + insertKlayman(515, 440); _klayman->setDoDeltaX(1); } else { - InsertKlayman(KmScene1306, 355, 440); + insertKlayman(355, 440); } setMessageList(0x004AFBC8); sendMessage(this, 0x2000, 0); _vm->_collisionMan->addSprite(_asTape); } else if (which == 3) { - InsertKlayman(KmScene1306, 534, 440); + insertKlayman(534, 440); setMessageList(0x004AFC30); sendMessage(this, 0x2000, 0); _vm->_collisionMan->addSprite(_asTape); } else if (which == 4) { - InsertKlayman(KmScene1306, 136, 440); + insertKlayman(136, 440); sendMessage(_klayman, 0x2000, 1); setMessageList(0x004AFC38); sendMessage(this, 0x2000, 1); _vm->_collisionMan->addSprite(_asTape); } else if (which == 5) { - InsertKlayman(KmScene1306, 136, 440); + insertKlayman(136, 440); sendMessage(_klayman, 0x2000, 1); setMessageList(0x004AFB00); sendMessage(this, 0x2000, 1); _vm->_collisionMan->addSprite(_asTape); } else { - InsertKlayman(KmScene1306, 286, 408); + insertKlayman(286, 408); setSurfacePriority(_asElevator->getSurface(), 1100); setSurfacePriority(_asElevatorDoor->getSurface(), 1090); setSurfacePriority(_sprite1->getSurface(), 1080); @@ -1621,7 +1621,7 @@ Scene1308::Scene1308(NeverhoodEngine *vm, Module *parentModule, int which) _sprite4 = NULL; if (which < 0) { - InsertKlayman(KmScene1308, 380, 440); + insertKlayman(380, 440); setMessageList(0x004B57C0); if (getGlobalVar(0x80455A41)) { _sprite4 = insertStaticSprite(0x0101A624, 1100); @@ -1631,7 +1631,7 @@ Scene1308::Scene1308(NeverhoodEngine *vm, Module *parentModule, int which) setRectList(0x004B5980); } } else if (which == 1) { - InsertKlayman(KmScene1308, 640, 440); + insertKlayman(640, 440); setMessageList(0x004B57C8); if (getGlobalVar(0x80455A41)) { _sprite4 = insertStaticSprite(0x0101A624, 1100); @@ -1641,7 +1641,7 @@ Scene1308::Scene1308(NeverhoodEngine *vm, Module *parentModule, int which) setRectList(0x004B5980); } } else if (which == 2) { - InsertKlayman(KmScene1308, 475, 440); + insertKlayman(475, 440); setMessageList(0x004B58B0); if (getGlobalVar(0x80455A41)) { _sprite5 = addSprite(new Class592(_vm, this)); @@ -1652,7 +1652,7 @@ Scene1308::Scene1308(NeverhoodEngine *vm, Module *parentModule, int which) setRectList(0x004B5980); } } else { - InsertKlayman(KmScene1308, 41, 440); + insertKlayman(41, 440); setMessageList(0x004B57D0); sendMessage(_class549, 0x4808, 0); _sprite1->setVisible(false); diff --git a/engines/neverhood/module1400.cpp b/engines/neverhood/module1400.cpp index 7bff2940c8..b1354584b0 100644 --- a/engines/neverhood/module1400.cpp +++ b/engines/neverhood/module1400.cpp @@ -683,19 +683,19 @@ Scene1401::Scene1401(NeverhoodEngine *vm, Module *parentModule, int which) _sprite2->setVisible(false); if (which < 0) { - InsertKlayman(KmScene1401, 380, 447); + insertKlayman(380, 447); setMessageList(0x004B65C8); _sprite1->setVisible(false); } else if (which == 1) { - InsertKlayman(KmScene1401, 0, 447); + insertKlayman(0, 447); setMessageList(0x004B65D0); _sprite1->setVisible(false); } else if (which == 2) { - InsertKlayman(KmScene1401, 660, 447); + insertKlayman(660, 447); setMessageList(0x004B65D8); _sprite1->setVisible(false); } else { - InsertKlayman(KmScene1401, 290, 413); + insertKlayman(290, 413); setMessageList(0x004B65E8); _sprite1->setVisible(false); } @@ -892,16 +892,16 @@ Scene1402::Scene1402(NeverhoodEngine *vm, Module *parentModule, int which) setRectList(0x004B0C98); if (which < 0) { - InsertKlayman(KmScene1402, 377, 391); + insertKlayman(377, 391); setMessageList(0x004B0B48); if (!getGlobalVar(0x70A1189C)) { _class482 = addSprite(new Class482(_vm, this, 0)); } } else if (which == 1) { - InsertKlayman(KmScene1402, 42, 391); + insertKlayman(42, 391); setMessageList(0x004B0B50); } else if (which == 2) { - InsertKlayman(KmScene1402, 377, 391); + insertKlayman(377, 391); setMessageList(0x004B0B60); _klayman->setDoDeltaX(1); if (getGlobalVar(0x70A1189C)) { @@ -913,7 +913,7 @@ Scene1402::Scene1402(NeverhoodEngine *vm, Module *parentModule, int which) _class482 = addSprite(new Class482(_vm, this, 0)); } } else { - InsertKlayman(KmScene1402, 513, 391); + insertKlayman(513, 391); setMessageList(0x004B0B58); if (!getGlobalVar(0x70A1189C)) { _class482 = addSprite(new Class482(_vm, this, 2)); @@ -1351,10 +1351,10 @@ Scene1403::Scene1403(NeverhoodEngine *vm, Module *parentModule, int which) _asTape2->setRepl(64, 0); if (which < 0) { - InsertKlayman(KmScene1403, 380, 463); + insertKlayman(380, 463); setMessageList(0x004B1F18); } else { - InsertKlayman(KmScene1403, 640, 463); + insertKlayman(640, 463); setMessageList(0x004B1F20); } _klayman->setRepl(64, 0); @@ -1464,21 +1464,21 @@ Scene1404::Scene1404(NeverhoodEngine *vm, Module *parentModule, int which) _vm->_collisionMan->addSprite(_asTape); if (which < 0) { - InsertKlayman(KmScene1404, 376, 406); + insertKlayman(376, 406); setMessageList(0x004B8C28); } else if (which == 1) { - InsertKlayman(KmScene1404, 376, 406); + insertKlayman(376, 406); setMessageList(0x004B8C30); } else if (which == 2) { if (getGlobalVar(0xC0418A02)) { - InsertKlayman(KmScene1404, 347, 406); + insertKlayman(347, 406); _klayman->setDoDeltaX(1); } else { - InsertKlayman(KmScene1404, 187, 406); + insertKlayman(187, 406); } setMessageList(0x004B8D28); } else { - InsertKlayman(KmScene1404, 30, 406); + insertKlayman(30, 406); setMessageList(0x004B8C38); } diff --git a/engines/neverhood/module1700.cpp b/engines/neverhood/module1700.cpp index 30e4631f23..9547d3447c 100644 --- a/engines/neverhood/module1700.cpp +++ b/engines/neverhood/module1700.cpp @@ -182,7 +182,7 @@ Scene1705::Scene1705(NeverhoodEngine *vm, Module *parentModule, int which) SetMessageHandler(&Scene1705::handleMessage); SetUpdateHandler(&Scene1705::update); - _vm->_collisionMan->setHitRects(0x004B69D8); + setHitRects(0x004B69D8); _surfaceFlag = true; @@ -207,30 +207,30 @@ Scene1705::Scene1705(NeverhoodEngine *vm, Module *parentModule, int which) which = 4; if (which < 0) { - InsertKlayman(KmScene1705, 231, 434); + insertKlayman(231, 434); setMessageList(0x004B69E8); sendMessage(this, 0x2000, 0); _klayman->setClipRect(0, 0, _sprite->getDrawRect().x2(), 480); } else if (which == 1) { - InsertKlayman(KmScene1705, 431, 434); + insertKlayman(431, 434); sendMessage(_klayman, 0x2000, 1); setMessageList(0x004B6A08); sendMessage(this, 0x2000, 1); _klayman->setClipRect(0, 0, _sprite->getDrawRect().x2(), 480); } else if (which == 2) { - InsertKlayman(KmScene1705, 431, 434); + insertKlayman(431, 434); sendMessage(_klayman, 0x2000, 1); setMessageList(0x004B6AA0); sendMessage(this, 0x2000, 1); _klayman->setClipRect(0, 0, _sprite->getDrawRect().x2(), 480); } else if (which == 3) { - InsertKlayman(KmScene1705, 431, 434); + insertKlayman(431, 434); sendMessage(_klayman, 0x2000, 1); setMessageList(0x004B6A18); sendMessage(this, 0x2000, 1); _klayman->setClipRect(0, 0, _sprite->getDrawRect().x2(), 480); } else { - InsertKlayman(KmScene1705, 231, 74); + insertKlayman(231, 74); sendMessage(_klayman, 0x2000, 0); setMessageList(0x004B69F0); sendMessage(this, 0x2000, 0); diff --git a/engines/neverhood/module2000.cpp b/engines/neverhood/module2000.cpp index 3977598726..b870d823ec 100644 --- a/engines/neverhood/module2000.cpp +++ b/engines/neverhood/module2000.cpp @@ -108,26 +108,26 @@ Scene2001::Scene2001(NeverhoodEngine *vm, Module *parentModule, int which) _class401 = insertStaticSprite(0x0D641724, 1100); if (which < 0) { - InsertKlayman(KmScene2001, 300, 345); + insertKlayman(300, 345); setMessageList(0x004B3538); sendMessage(this, 0x2000, 0); } else if (which == 1) { - InsertKlayman(KmScene2001, 116, 345); + insertKlayman(116, 345); sendMessage(_klayman, 0x2000, 1); setMessageList(0x004B3540); sendMessage(this, 0x2000, 1); } else if (which == 2) { - InsertKlayman(KmScene2001, 116, 345); + insertKlayman(116, 345); sendMessage(_klayman, 0x2000, 1); setMessageList(0x004B35F0); sendMessage(this, 0x2000, 1); } else if (which == 3) { - InsertKlayman(KmScene2001, 116, 345); + insertKlayman(116, 345); sendMessage(_klayman, 0x2000, 1); setMessageList(0x004B3550); sendMessage(this, 0x2000, 1); } else { - InsertKlayman(KmScene2001, 390, 345); + insertKlayman(390, 345); setMessageList(0x004B3530); sendMessage(this, 0x2000, 0); _klayman->setDoDeltaX(1); diff --git a/engines/neverhood/module2200.cpp b/engines/neverhood/module2200.cpp index 124ace634c..59dcbfc127 100644 --- a/engines/neverhood/module2200.cpp +++ b/engines/neverhood/module2200.cpp @@ -774,25 +774,25 @@ Scene2201::Scene2201(NeverhoodEngine *vm, Module *parentModule, int which) _doorLightSprite = insertStaticSprite(0xA4062212, 900); if (which < 0) { - InsertKlaymanInitArgs(KmScene2201, 300, 427, (&_rect1, 2)); + insertKlayman(300, 427, &_rect1, 2); setMessageList(0x004B8118); _asDoor = addSprite(new AsScene2201Door(_vm, _klayman, _doorLightSprite, false)); } else if (which == 1) { - InsertKlaymanInitArgs(KmScene2201, 412, 393, (&_rect1, 2)); + insertKlayman(412, 393, &_rect1, 2); setMessageList(0x004B8130); _asDoor = addSprite(new AsScene2201Door(_vm, _klayman, _doorLightSprite, false)); } else if (which == 2) { if (getGlobalVar(0xC0418A02)) { - InsertKlaymanInitArgs(KmScene2201, 379, 427, (&_rect1, 2)); + insertKlayman(379, 427, &_rect1, 2); _klayman->setDoDeltaX(1); } else { - InsertKlaymanInitArgs(KmScene2201, 261, 427, (&_rect1, 2)); + insertKlayman(261, 427, &_rect1, 2); } setMessageList(0x004B8178); _asDoor = addSprite(new AsScene2201Door(_vm, _klayman, _doorLightSprite, false)); } else { NPoint pt = _dataResource.getPoint(0x0304D8DC); - InsertKlaymanInitArgs(KmScene2201, pt.x, pt.y, (&_rect1, 2)); + insertKlayman(pt.x, pt.y, &_rect1, 2); setMessageList(0x004B8120); _asDoor = addSprite(new AsScene2201Door(_vm, _klayman, _doorLightSprite, true)); } @@ -1350,7 +1350,7 @@ Scene2203::Scene2203(NeverhoodEngine *vm, Module *parentModule, int which) setPalette(0x82C80334); insertMouse433(0x80330824); - _vm->_collisionMan->setHitRects(0x004B8320); + setHitRects(0x004B8320); if (getGlobalVar(0x13382860) == 1) { _class545 = addSprite(new Class545(_vm, this, 2, 1100, 282, 432)); @@ -1376,21 +1376,21 @@ Scene2203::Scene2203(NeverhoodEngine *vm, Module *parentModule, int which) _vm->_collisionMan->addSprite(_asRightDoor); if (which < 0) { - InsertKlayman(KmScene2203, 200, 427); + insertKlayman(200, 427); setMessageList(0x004B8340); } else if (which == 1) { - InsertKlayman(KmScene2203, 640, 427); + insertKlayman(640, 427); setMessageList(0x004B8350); } else if (which == 2) { if (getGlobalVar(0xC0418A02)) { - InsertKlayman(KmScene2203, 362, 427); + insertKlayman(362, 427); _klayman->setDoDeltaX(1); } else { - InsertKlayman(KmScene2203, 202, 427); + insertKlayman(202, 427); } setMessageList(0x004B8358); } else { - InsertKlayman(KmScene2203, 0, 427); + insertKlayman(0, 427); setMessageList(0x004B8348); } @@ -1496,7 +1496,7 @@ Scene2205::Scene2205(NeverhoodEngine *vm, Module *parentModule, int which) SetMessageHandler(&Scene2205::handleMessage); SetUpdateHandler(&Scene2205::update); - _vm->_collisionMan->setHitRects(0x004B0620); + setHitRects(0x004B0620); _surfaceFlag = true; if (getGlobalVar(0x4D080E54)) { @@ -1522,21 +1522,21 @@ Scene2205::Scene2205(NeverhoodEngine *vm, Module *parentModule, int which) _ssDoorFrame = addSprite(new SsScene2205DoorFrame(_vm)); if (which < 0) { - InsertKlayman(KmScene2205, 320, 417); + insertKlayman(320, 417); setMessageList(0x004B0658); if (!getGlobalVar(0x4D080E54)) { _palette->addPalette(0x68033B1C, 0, 65, 0); } _isKlaymanInLight = false; } else if (which == 1) { - InsertKlayman(KmScene2205, 640, 417); + insertKlayman(640, 417); setMessageList(0x004B0648); if (!getGlobalVar(0x4D080E54)) { _palette->addPalette(0x68033B1C, 0, 65, 0); } _isKlaymanInLight = false; } else { - InsertKlayman(KmScene2205, 0, 417); + insertKlayman(0, 417); setMessageList(0x004B0640); _isKlaymanInLight = true; } @@ -1795,24 +1795,24 @@ Scene2206::Scene2206(NeverhoodEngine *vm, Module *parentModule, int which) _vm->_collisionMan->addSprite(_class607); if (which < 0) { - InsertKlayman(KmScene2206, 200, 430); + insertKlayman(200, 430); setMessageList(0x004B88A8); } else if (which == 1) { - InsertKlayman(KmScene2206, 640, 430); + insertKlayman(640, 430); setMessageList(0x004B88B8); } else if (which == 2) { - InsertKlayman(KmScene2206, 205, 396); + insertKlayman(205, 396); setMessageList(0x004B88C8); _palette->addPalette(getGlobalVar(0x4D080E54) ? 0xB103B604 : 0x0263D144, 0, 65, 0); sub4819D0(); _soundResource.play(0x53B8284A); } else if (which == 3) { - InsertKlayman(KmScene2206, kScene2206XPositions[getGlobalVar(0x48A68852)], 430); + insertKlayman(kScene2206XPositions[getGlobalVar(0x48A68852)], 430); if (getGlobalVar(0xC0418A02)) _klayman->setDoDeltaX(1); setMessageList(0x004B8A70); } else { - InsertKlayman(KmScene2206, 0, 430); + insertKlayman(0, 430); setMessageList(0x004B88B0); } @@ -2251,7 +2251,7 @@ Scene2207::Scene2207(NeverhoodEngine *vm, Module *parentModule, int which) SetUpdateHandler(&Scene2207::update); _surfaceFlag = true; - InsertKlayman(KmScene2207, 0, 0); + insertKlayman(0, 0); _klayman->setRepl(64, 0); setMessageList(0x004B38E8); @@ -2673,18 +2673,18 @@ Scene2242::Scene2242(NeverhoodEngine *vm, Module *parentModule, int which) _vm->_collisionMan->addSprite(_asTape); if (which < 0) { - InsertKlayman(KmScene2242, 200, 430); + insertKlayman(200, 430); setMessageList(0x004B3C18); } else if (which == 1) { - InsertKlayman(KmScene2242, 530, 430); + insertKlayman(530, 430); setMessageList(0x004B3D60); } else if (which == 2) { - InsertKlayman(KmScene2242, kScene2242XPositions[!getGlobalVar(0x48A68852) ? 0 : 1], 430); + insertKlayman(kScene2242XPositions[!getGlobalVar(0x48A68852) ? 0 : 1], 430); setMessageList(0x004B3D48); if (getGlobalVar(0xC0418A02)) _klayman->setDoDeltaX(1); } else { - InsertKlayman(KmScene2242, 0, 430); + insertKlayman(0, 430); setMessageList(0x004B3C20); } @@ -2802,18 +2802,18 @@ HallOfRecordsScene::HallOfRecordsScene(NeverhoodEngine *vm, Module *parentModule } if (which < 0) { - InsertKlayman(KmHallOfRecords, 200, 430); + insertKlayman(200, 430); setMessageList(0x004B2900); } else if (which == 1) { - InsertKlayman(KmHallOfRecords, 640, 430); + insertKlayman(640, 430); setMessageList(0x004B2910); } else if (which == 2) { - InsertKlayman(KmHallOfRecords, kHallOfRecordsKlaymanXPos[getGlobalVar(0x48A68852) - _sceneInfo140->xPosIndex], 430); + insertKlayman(kHallOfRecordsKlaymanXPos[getGlobalVar(0x48A68852) - _sceneInfo140->xPosIndex], 430); setMessageList(0x004B2B70); if (getGlobalVar(0xC0418A02)) _klayman->setDoDeltaX(1); } else { - InsertKlayman(KmHallOfRecords, 0, 430); + insertKlayman(0, 430); setMessageList(0x004B2908); } @@ -2897,18 +2897,18 @@ Scene2247::Scene2247(NeverhoodEngine *vm, Module *parentModule, int which) } if (which < 0) { - InsertKlayman(KmScene2247, 200, 430); + insertKlayman(200, 430); setMessageList(0x004B5428); } else if (which == 1) { - InsertKlayman(KmScene2247, 640, 430); + insertKlayman(640, 430); setMessageList(0x004B5438); } else if (which == 2) { - InsertKlayman(KmScene2247, kScene2247XPositions[getGlobalVar(0xC8C28808) == 0x0008E486 ? 0 : 1], 430); + insertKlayman(kScene2247XPositions[getGlobalVar(0xC8C28808) == 0x0008E486 ? 0 : 1], 430); if (getGlobalVar(0xC0418A02)) _klayman->setDoDeltaX(1); setMessageList(0x004B5530); } else { - InsertKlayman(KmScene2247, 0, 430); + insertKlayman(0, 430); setMessageList(0x004B5430); } diff --git a/engines/neverhood/scene.cpp b/engines/neverhood/scene.cpp index f1ee55420a..8d7fc787ec 100644 --- a/engines/neverhood/scene.cpp +++ b/engines/neverhood/scene.cpp @@ -191,6 +191,10 @@ void Scene::setPalette(uint32 fileHash) { _palette->usePalette(); } +void Scene::setHitRects(uint32 id) { + _vm->_collisionMan->setHitRects(id); +} + Sprite *Scene::insertStaticSprite(uint32 fileHash, int surfacePriority) { return addSprite(new StaticSprite(_vm, fileHash, surfacePriority)); } diff --git a/engines/neverhood/scene.h b/engines/neverhood/scene.h index d0decd2c49..09d34b5734 100644 --- a/engines/neverhood/scene.h +++ b/engines/neverhood/scene.h @@ -37,12 +37,6 @@ namespace Neverhood { -#define InsertKlayman(KlaymanClass, X, Y) _klayman = new KlaymanClass(_vm, this, X, Y); addSprite(_klayman) -#define InsertKlaymanInitArgs(KlaymanClass, X, Y, InitArgs) _klayman = new KlaymanClass(_vm, this, X, Y); ((KlaymanClass*)_klayman)->init InitArgs; addSprite(_klayman) - -#define InsertSprite(SpriteObj, SpriteClass) SpriteObj = (SpriteClass*)addSprite(new SpriteClass(_vm)); -#define InsertSpriteInitArgs(SpriteObj, SpriteClass, InitArgs) SpriteObj = new SpriteClass(_vm); ((SpriteClass*)(SpriteObj))-> init InitArgs; addSprite(SpriteObj) - class Scene : public Entity { public: Scene(NeverhoodEngine *vm, Module *parentModule, bool clearHitRects); @@ -61,6 +55,7 @@ public: void setBackgroundY(int16 y) { _background->getSurface()->getDrawRect().y = y; } int16 getBackgroundY() { return _background->getSurface()->getDrawRect().y; } void setPalette(uint32 fileHash = 0); + void setHitRects(uint32 id); Sprite *insertStaticSprite(uint32 fileHash, int surfacePriority); void insertMouse433(uint32 fileHash, NRect *mouseRect = NULL); void insertMouse435(uint32 fileHash, int16 x1, int16 x2); @@ -70,6 +65,36 @@ public: SmackerPlayer *addSmackerPlayer(SmackerPlayer *smackerPlayer); void update(); // Some crazy templated functions to make the logic code smaller/simpler (imo!) + // insertKlayman + template + void insertKlayman() { + _klayman = (T*)addSprite(new T(_vm, this)); + } + template + void insertKlayman(Arg1 arg1) { + _klayman = (T*)addSprite(new T(_vm, this, arg1)); + } + template + void insertKlayman(Arg1 arg1, Arg2 arg2) { + _klayman = (T*)addSprite(new T(_vm, this, arg1, arg2)); + } + template + void insertKlayman(Arg1 arg1, Arg2 arg2, Arg3 arg3) { + _klayman = (T*)addSprite(new T(_vm, this, arg1, arg2, arg3)); + } + template + void insertKlayman(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4) { + _klayman = (T*)addSprite(new T(_vm, this, arg1, arg2, arg3, arg4)); + } + template + void insertKlayman(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5) { + _klayman = (T*)addSprite(new T(_vm, this, arg1, arg2, arg3, arg4, arg5)); + } + template + void insertKlayman(Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5, Arg6 arg6) { + _klayman = (T*)addSprite(new T(_vm, this, arg1, arg2, arg3, arg4, arg5, arg6)); + } + // insertSprite template T* insertSprite() { return (T*)addSprite(new T(_vm)); -- cgit v1.2.3