From c30e16628e01b5be671330b24ed73d1294205f6b Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Fri, 16 Sep 2011 20:02:07 +0000 Subject: NEVERHOOD: Add Module::updateChild and use it (in most places) --- engines/neverhood/gamemodule.cpp | 110 ++------------- engines/neverhood/module.cpp | 13 ++ engines/neverhood/module.h | 1 + engines/neverhood/module1000.cpp | 30 +--- engines/neverhood/module1200.cpp | 59 +++----- engines/neverhood/module1200.h | 3 - engines/neverhood/module1300.cpp | 91 ++----------- engines/neverhood/module1400.cpp | 46 +------ engines/neverhood/module1500.cpp | 7 +- engines/neverhood/module1700.cpp | 24 +--- engines/neverhood/module1800.cpp | 63 ++------- engines/neverhood/module2000.cpp | 18 +-- engines/neverhood/module2200.cpp | 288 +++++++-------------------------------- engines/neverhood/module2300.cpp | 88 +++++------- engines/neverhood/module3000.cpp | 200 +++++++++++---------------- engines/neverhood/module3000.h | 2 - engines/neverhood/sprite.cpp | 4 - engines/neverhood/sprite.h | 10 +- 18 files changed, 254 insertions(+), 803 deletions(-) (limited to 'engines') diff --git a/engines/neverhood/gamemodule.cpp b/engines/neverhood/gamemodule.cpp index 650287b473..6ef58e4fae 100644 --- a/engines/neverhood/gamemodule.cpp +++ b/engines/neverhood/gamemodule.cpp @@ -268,8 +268,8 @@ void GameModule::startup() { //createModule1700(1); //createModule1400(-1); #if 1 - _vm->gameState().sceneNum = 1; - createModule1000(-1); + _vm->gameState().sceneNum = 0; + createModule1200(-1); #endif #if 0 _vm->gameState().sceneNum = 0; @@ -296,14 +296,7 @@ void GameModule::createModule1000(int which) { } void GameModule::updateModule1000() { - if (!_childObject) - return; - _childObject->handleUpdate(); - if (_done) { - _done = false; - // TODO _resourceTable3.load(); - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createModule2300(0); _childObject->handleUpdate(); } @@ -316,13 +309,7 @@ void GameModule::createModule1200(int which) { } void GameModule::updateModule1200() { - if (!_childObject) - return; - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { error("// TODO createModule2600(0);"); // TODO createModule2600(0); @@ -341,13 +328,7 @@ void GameModule::createModule1300(int which) { } void GameModule::updateModule1300() { - if (!_childObject) - return; - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { // TODO _gameState.clear(); // TODO GameModule_handleKeyEscape @@ -365,13 +346,7 @@ void GameModule::createModule1400(int which) { } void GameModule::updateModule1400() { - if (!_childObject) - return; - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { error("WEIRD!"); } else { @@ -389,13 +364,7 @@ void GameModule::createModule1500(int which) { } void GameModule::updateModule1500() { - if (!_childObject) - return; - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createModule1000(0); _childObject->handleUpdate(); } @@ -408,13 +377,7 @@ void GameModule::createModule1700(int which) { } void GameModule::updateModule1700() { - if (!_childObject) - return; - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { debug("Module1700 done; _field20 = %d", _field20); if (_field20 == 1) { // TODO createModule2900(3); @@ -433,13 +396,7 @@ void GameModule::createModule1800(int which) { } void GameModule::updateModule1800() { - if (!_childObject) - return; - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { // TODO GameState_clear(); // TODO GameModule_handleKeyEscape(); @@ -463,13 +420,7 @@ void GameModule::createModule2000(int which) { } void GameModule::updateModule2000() { - if (!_childObject) - return; - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { // TODO createModule2900(4); _childObject->handleUpdate(); } @@ -482,13 +433,7 @@ void GameModule::createModule2200(int which) { } void GameModule::updateModule2200() { - if (!_childObject) - return; - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createModule2300(1); _childObject->handleUpdate(); } @@ -501,40 +446,19 @@ void GameModule::createModule2300(int which) { } void GameModule::updateModule2300() { - if (!_childObject) - return; - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createModule2200(0); - _childObject->handleUpdate(); } else if (_field20 == 2) { createModule1200(0); - _childObject->handleUpdate(); } else if (_field20 == 3) { // TODO createModule2400(0); - // TODO _childObject->handleUpdate(); } else if (_field20 == 4) { // TODO createModule3000(0); - // TODO _childObject->handleUpdate(); } else { createModule1000(1); - _childObject->handleUpdate(); - } - } - if (_field24 >= 0) { - if (_field24 == 2) { - // TODO _resourceTable4.load(); - } else if (_field24 == 0) { - // TODO _resourceTable3.load(); } - _field24 = -1; - } - if (_field26 >= 0) { - _field26 = -1; + _childObject->handleUpdate(); } } @@ -549,13 +473,7 @@ void GameModule::createModule3000(int which) { } void GameModule::updateModule3000() { - if (!_childObject) - return; - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { // TODO createModule1900(0); // TODO _childObject->handleUpdate(); diff --git a/engines/neverhood/module.cpp b/engines/neverhood/module.cpp index c38b96e199..6d49838c49 100644 --- a/engines/neverhood/module.cpp +++ b/engines/neverhood/module.cpp @@ -89,4 +89,17 @@ void Module::createSmackerScene(uint32 fileHash, bool doubleSurface, bool flag1, _childObject = smackerScene; } +bool Module::updateChild() { + if (_childObject) { + _childObject->handleUpdate(); + if (_done) { + _done = false; + delete _childObject; + _childObject = NULL; + return false; + } + } + return true; +} + } // End of namespace Neverhood diff --git a/engines/neverhood/module.h b/engines/neverhood/module.h index 470fe36c98..a37fd522aa 100644 --- a/engines/neverhood/module.h +++ b/engines/neverhood/module.h @@ -53,6 +53,7 @@ protected: NavigationScene *navigationScene(); void createNavigationScene(uint32 navigationListId, int navigationIndex, const byte *itemsTypes = NULL); void createSmackerScene(uint32 fileHash, bool doubleSurface, bool flag1, bool canAbort); + bool updateChild(); }; } // End of namespace Neverhood diff --git a/engines/neverhood/module1000.cpp b/engines/neverhood/module1000.cpp index 1e5b0765ea..51e1d1959d 100644 --- a/engines/neverhood/module1000.cpp +++ b/engines/neverhood/module1000.cpp @@ -101,11 +101,7 @@ void Module1000::createScene1005(int which) { } void Module1000::updateScene1001() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 2) { createScene1003(0); _childObject->handleUpdate(); @@ -117,11 +113,7 @@ void Module1000::updateScene1001() { } void Module1000::updateScene1002() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { sendMessage(_parentModule, 0x1009, 0); } else if (_field20 == 2) { @@ -135,22 +127,14 @@ void Module1000::updateScene1002() { } void Module1000::updateScene1003() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene1001(2); _childObject->handleUpdate(); } } void Module1000::updateScene1004() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene1005(0); _childObject->handleUpdate(); @@ -162,12 +146,8 @@ void Module1000::updateScene1004() { } void Module1000::updateScene1005() { - _childObject->handleUpdate(); - if (_done) { + if (!updateChild()) { // TODO Music18hList_stop(_musicFileHash, 0, 1); - _done = false; - delete _childObject; - _childObject = NULL; createScene1004(1); _childObject->handleUpdate(); } diff --git a/engines/neverhood/module1200.cpp b/engines/neverhood/module1200.cpp index a12f1cca09..fa0bea0e94 100644 --- a/engines/neverhood/module1200.cpp +++ b/engines/neverhood/module1200.cpp @@ -25,10 +25,12 @@ namespace Neverhood { Module1200::Module1200(NeverhoodEngine *vm, Module *parentModule, int which) - : Module(vm, parentModule), _moduleDone(false) { + : Module(vm, parentModule) { // TODO _resourceTable.setResourceList(0x004B3E68); SetMessageHandler(&Module1200::handleMessage); + + debug("Module1200: which = %d", which); if (which < 0) { switch (_vm->gameState().sceneNum) { @@ -56,17 +58,6 @@ Module1200::~Module1200() { // TODO Music18hList_deleteGroup(0x00478311); } -uint32 Module1200::handleMessage(int messageNum, const MessageParam ¶m, Entity *sender) { - uint32 messageResult = Module::handleMessage(messageNum, param, sender); - switch (messageNum) { - case 0x1009: - _moduleDone = true; - _moduleDoneStatus = param.asInteger(); - break; - } - return messageResult; -} - void Module1200::createScene1201(int which) { _vm->gameState().sceneNum = 0; _childObject = new Scene1201(_vm, this, which); @@ -88,41 +79,31 @@ void Module1200::createScene1203(int which) { } void Module1200::updateScene1201() { - _childObject->handleUpdate(); - if (_moduleDone) { - _moduleDone = false; - delete _childObject; - _childObject = NULL; - if (_moduleDoneStatus == 1) { + if (!updateChild()) { + if (_field20 == 1) { createScene1202(0); _childObject->handleUpdate(); - } else if (_moduleDoneStatus == 2) { - sendMessage(_parentModule, 0x1009, 0); - } else if (getGlobalVar(0x0A18CA33) && !getGlobalVar(0x2A02C07B)) { - createScene1203(-1); + } else if (_field20 == 2) { + if (getGlobalVar(0x0A18CA33) && !getGlobalVar(0x2A02C07B)) { + createScene1203(-1); + } else { + sendMessage(_parentModule, 0x1009, 1); + } } else { - sendMessage(_parentModule, 0x1009, 1); + sendMessage(_parentModule, 0x1009, 0); } } } void Module1200::updateScene1202() { - _childObject->handleUpdate(); - if (_moduleDone) { - _moduleDone = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene1201(1); _childObject->handleUpdate(); } } void Module1200::updateScene1203() { - _childObject->handleUpdate(); - if (_moduleDone) { - _moduleDone = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene1201(3); _childObject->handleUpdate(); // TODO Music18hList_play(0x62222CAE, 0, 0, 1); @@ -788,15 +769,6 @@ Scene1201::Scene1201(NeverhoodEngine *vm, Module *parentModule, int which) int16 x1, x2; Sprite *tempSprite, *class464; - // TODO _resourceTable2.setResourceList(ex_sub_41C730(), true); - if (getGlobalVar(0x0A18CA33)) { - // TODO _resourceTable1.setResourceList(0x004AEA10, true); - } else if (getGlobalVar(0x0A310817)) { - // TODO _resourceTable1.setResourceList(0x004AEA70, true); - } else { - // TODO _resourceTable1.setResourceList(0x004AEB18, true); - } - SetUpdateHandler(&Scene1201::update); SetMessageHandler(&Scene1201::handleMessage); @@ -844,6 +816,8 @@ Scene1201::Scene1201(NeverhoodEngine *vm, Module *parentModule, int which) class464 = addSprite(new Class464(_vm)); + debug("Scene1201: which = %d", which); + if (which < 0) { InsertKlaymanInitArgs(KmScene1201, 364, 333, (class464)); setMessageList(0x004AEC08); @@ -1006,7 +980,6 @@ void Scene1201::update() { } uint32 Scene1201::handleMessage(int messageNum, const MessageParam ¶m, Entity *sender) { - debug("Scene1201::handleMessage(%04X)", messageNum); uint32 messageResult = Scene::handleMessage(messageNum, param, sender); switch (messageNum) { case 0x100D: diff --git a/engines/neverhood/module1200.h b/engines/neverhood/module1200.h index 3ffed442d9..df1ed41b2c 100644 --- a/engines/neverhood/module1200.h +++ b/engines/neverhood/module1200.h @@ -37,9 +37,6 @@ public: virtual ~Module1200(); protected: // TODO ResourceTable _resourceTable; - bool _moduleDone; - uint32 _moduleDoneStatus; - uint32 handleMessage(int messageNum, const MessageParam ¶m, Entity *sender); void createScene1201(int which); void createScene1202(int which); void createScene1203(int which); diff --git a/engines/neverhood/module1300.cpp b/engines/neverhood/module1300.cpp index 46597e0b78..149af4a071 100644 --- a/engines/neverhood/module1300.cpp +++ b/engines/neverhood/module1300.cpp @@ -283,11 +283,7 @@ void Module1300::createScene1318(int which) { } void Module1300::updateScene1302() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene1305(0); } else { @@ -298,45 +294,28 @@ void Module1300::updateScene1302() { } void Module1300::updateScene1303() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene1306(3); _childObject->handleUpdate(); } } void Module1300::updateScene1304() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene1316(0); _childObject->handleUpdate(); } } void Module1300::updateScene1305() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene1317(-1); _childObject->handleUpdate(); } } void Module1300::updateScene1306() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; - debug("_field20 = %d", _field20); + if (!updateChild()) { if (_field20 == 2) { createScene1309(0); _childObject->handleUpdate(); @@ -353,22 +332,14 @@ void Module1300::updateScene1306() { } void Module1300::updateScene1307() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene1308(2); _childObject->handleUpdate(); } } void Module1300::updateScene1308() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 0) { createScene1314(0); } else if (_field20 == 1) { @@ -381,22 +352,14 @@ void Module1300::updateScene1308() { } void Module1300::updateScene1309() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene1306(2); _childObject->handleUpdate(); } } void Module1300::updateScene1310() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_vm->gameState().sceneNum == 9) createScene1306(0); else @@ -409,11 +372,7 @@ void Module1300::updateScene1311() { } void Module1300::updateScene1312() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 0) { createScene1313(0); } else if (_field20 == 1) { @@ -424,11 +383,7 @@ void Module1300::updateScene1312() { } void Module1300::updateScene1313() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { switch (_field20) { case 0: createScene1315(1); @@ -448,11 +403,7 @@ void Module1300::updateScene1313() { } void Module1300::updateScene1314() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 0) { createScene1313(2); } else if (_field20 == 1) { @@ -463,11 +414,7 @@ void Module1300::updateScene1314() { } void Module1300::updateScene1315() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 0) { createScene1313(3); } else if (_field20 == 1) { @@ -478,11 +425,7 @@ void Module1300::updateScene1315() { } void Module1300::updateScene1316() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 0) { createScene1313(4); } else if (_field20 == 1) { @@ -493,11 +436,7 @@ void Module1300::updateScene1316() { } void Module1300::updateScene1317() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene1318(-1); _childObject->handleUpdate(); } diff --git a/engines/neverhood/module1400.cpp b/engines/neverhood/module1400.cpp index 4dac2a76be..edc47f5a56 100644 --- a/engines/neverhood/module1400.cpp +++ b/engines/neverhood/module1400.cpp @@ -121,11 +121,7 @@ void Module1400::createScene1407(int which) { } void Module1400::updateScene1401() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene1402(0); _childObject->handleUpdate(); @@ -139,14 +135,7 @@ void Module1400::updateScene1401() { } void Module1400::updateScene1402() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; - - debug("Scene1402: _field20 = %d", _field20); - + if (!updateChild()) { if (_field20 == 1) { createScene1403(0); _childObject->handleUpdate(); @@ -161,23 +150,14 @@ void Module1400::updateScene1402() { } void Module1400::updateScene1403() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene1402(1); _childObject->handleUpdate(); } } void Module1400::updateScene1404() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; - debug("Scene1404; _field20 = %d", _field20); + if (!updateChild()) { if (_field20 == 1) { createScene1405(0); _childObject->handleUpdate(); @@ -192,33 +172,21 @@ void Module1400::updateScene1404() { } void Module1400::updateScene1405() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene1404(1); _childObject->handleUpdate(); } } void Module1400::updateScene1406() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene1404(2); _childObject->handleUpdate(); } } void Module1400::updateScene1407() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene1402(2); _childObject->handleUpdate(); } diff --git a/engines/neverhood/module1500.cpp b/engines/neverhood/module1500.cpp index a014844e87..b942d8b836 100644 --- a/engines/neverhood/module1500.cpp +++ b/engines/neverhood/module1500.cpp @@ -50,11 +50,7 @@ Module1500::Module1500(NeverhoodEngine *vm, Module *parentModule, int which, boo } void Module1500::update() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { switch (_vm->gameState().sceneNum) { case 0: createScene1502(); @@ -77,7 +73,6 @@ void Module1500::update() { } void Module1500::createScene1501() { - debug("createScene1501"); _vm->gameState().sceneNum = 0; _childObject = new Scene1501(_vm, this, 0x8420221D, 0xA61024C4, 150, 48); SetUpdateHandler(&Module1500::update); diff --git a/engines/neverhood/module1700.cpp b/engines/neverhood/module1700.cpp index a36d35816e..528161ea2b 100644 --- a/engines/neverhood/module1700.cpp +++ b/engines/neverhood/module1700.cpp @@ -100,11 +100,7 @@ void Module1700::createScene1705(int which) { } void Module1700::updateScene1701() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_vm->gameState().sceneNum == 3) { createScene1705(0); _childObject->handleUpdate(); @@ -117,11 +113,7 @@ void Module1700::updateScene1701() { } void Module1700::updateScene1702() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 0) { createScene1703(0); _childObject->handleUpdate(); @@ -133,11 +125,7 @@ void Module1700::updateScene1702() { } void Module1700::updateScene1703() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 0) { createScene1704(-1); _childObject->handleUpdate(); @@ -156,11 +144,7 @@ void Module1700::updateScene1703() { } void Module1700::updateScene1705() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { sendMessage(_parentModule, 0x1009, 1); } } diff --git a/engines/neverhood/module1800.cpp b/engines/neverhood/module1800.cpp index f503848661..d3dc4b6e9e 100644 --- a/engines/neverhood/module1800.cpp +++ b/engines/neverhood/module1800.cpp @@ -146,17 +146,7 @@ void Module1800::createScene1809(int which) { } void Module1800::updateScene1801() { - _childObject->handleUpdate(); -#if 0 // TODO - NavigationScene *navigationScene = (NavigationScene*)_childObject; - if (navigationScene->soundFlag1 && navigationScene->index == 2) { - // TODO Sound1ChList_sub_4080B0(false); - } -#endif - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene1805(0); _childObject->handleUpdate(); @@ -167,6 +157,13 @@ void Module1800::updateScene1801() { createScene1804(0); _childObject->handleUpdate(); } + } else { +#if 0 // TODO + NavigationScene *navigationScene = (NavigationScene*)_childObject; + if (navigationScene->soundFlag1 && navigationScene->index == 2) { + // TODO Sound1ChList_sub_4080B0(false); + } +#endif } } @@ -187,11 +184,7 @@ void Module1800::updateScene1802() { } void Module1800::updateScene1803() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 2) { createScene1801(2); _childObject->handleUpdate(); @@ -207,49 +200,33 @@ void Module1800::updateScene1803() { } void Module1800::updateScene1804() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 0) { createScene1804b(-1); - _childObject->handleUpdate(); } else if (_field20 == 1) { createScene1801(1); - _childObject->handleUpdate(); } + _childObject->handleUpdate(); } } void Module1800::updateScene1805() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 0) { createScene1807(-1); - _childObject->handleUpdate(); } else if (_field20 == 1) { createScene1806(0); - _childObject->handleUpdate(); } else if (_field20 == 2) { createScene1801(3); - _childObject->handleUpdate(); } else if (_field20 == 3) { createScene1805(3); - _childObject->handleUpdate(); } + _childObject->handleUpdate(); } } void Module1800::updateScene1806() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 0) { sendMessage(_parentModule, 0x1009, 2); } else if (_field20 == 1) { @@ -257,20 +234,10 @@ void Module1800::updateScene1806() { _childObject->handleUpdate(); } } - if (_field24 >= 0) { - if (_field24 == 1) { - // TODO _resourceTable.setResourceList(ex_sub_42EDA0(0), true); - } - _field24 = -1; - } } void Module1800::updateScene1809() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { sendMessage(_parentModule, 0x1009, 1); // TODO GameState stuff } diff --git a/engines/neverhood/module2000.cpp b/engines/neverhood/module2000.cpp index 2b6a647885..130235512c 100644 --- a/engines/neverhood/module2000.cpp +++ b/engines/neverhood/module2000.cpp @@ -83,11 +83,7 @@ void Module2000::createScene2003(int which) { } void Module2000::updateScene2001() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { sendMessage(_parentModule, 0x1009, 0); } else { @@ -97,11 +93,7 @@ void Module2000::updateScene2001() { } void Module2000::updateScene2002() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 0) { if (getGlobalVar(0x98109F12)) { createScene2002(0); @@ -117,11 +109,7 @@ void Module2000::updateScene2002() { } void Module2000::updateScene2003() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene2002(0); } } diff --git a/engines/neverhood/module2200.cpp b/engines/neverhood/module2200.cpp index 62aec282c7..321fab1484 100644 --- a/engines/neverhood/module2200.cpp +++ b/engines/neverhood/module2200.cpp @@ -498,11 +498,7 @@ void Module2200::createScene2248(int which) { } void Module2200::updateScene2201() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2203(0); } else if (_field20 == 2) { @@ -514,21 +510,13 @@ void Module2200::updateScene2201() { } void Module2200::updateScene2202() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene2201(2); } } void Module2200::updateScene2203() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2205(0); } else if (_field20 == 2) { @@ -541,21 +529,13 @@ void Module2200::updateScene2203() { } void Module2200::updateScene2204() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene2203(2); } } void Module2200::updateScene2205() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2206(0); } else if (_field20 == 2) { @@ -568,11 +548,7 @@ void Module2200::updateScene2205() { } void Module2200::updateScene2206() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2247(0); } else if (_field20 == 2) { @@ -587,22 +563,14 @@ void Module2200::updateScene2206() { } void Module2200::updateScene2207() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene2206(2); _childObject->handleUpdate(); } } void Module2200::updateScene2208() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { // This is madness! switch (_vm->gameState().which) { case 4: @@ -725,22 +693,14 @@ void Module2200::updateScene2208() { } void Module2200::updateScene2209() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene2206(3); _childObject->handleUpdate(); } } void Module2200::updateScene2210() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2211(0); } else if (_field20 == 2) { @@ -753,11 +713,7 @@ void Module2200::updateScene2210() { } void Module2200::updateScene2211() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2212(0); } else if (_field20 == 2) { @@ -770,11 +726,7 @@ void Module2200::updateScene2211() { } void Module2200::updateScene2212() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2213(0); } else if (_field20 == 2) { @@ -787,11 +739,7 @@ void Module2200::updateScene2212() { } void Module2200::updateScene2213() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2214(0); } else if (_field20 == 2) { @@ -804,11 +752,7 @@ void Module2200::updateScene2213() { } void Module2200::updateScene2214() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2215(0); } else if (_field20 == 2) { @@ -821,11 +765,7 @@ void Module2200::updateScene2214() { } void Module2200::updateScene2215() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2216(0); } else if (_field20 == 2) { @@ -838,11 +778,7 @@ void Module2200::updateScene2215() { } void Module2200::updateScene2216() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2217(0); } else if (_field20 == 2) { @@ -855,11 +791,7 @@ void Module2200::updateScene2216() { } void Module2200::updateScene2217() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2218(0); } else if (_field20 == 2) { @@ -872,11 +804,7 @@ void Module2200::updateScene2217() { } void Module2200::updateScene2218() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2219(0); } else if (_field20 == 2) { @@ -889,11 +817,7 @@ void Module2200::updateScene2218() { } void Module2200::updateScene2219() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2220(0); } else if (_field20 == 2) { @@ -906,11 +830,7 @@ void Module2200::updateScene2219() { } void Module2200::updateScene2220() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2221(0); } else if (_field20 == 2) { @@ -923,11 +843,7 @@ void Module2200::updateScene2220() { } void Module2200::updateScene2221() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2222(0); } else if (_field20 == 2) { @@ -940,11 +856,7 @@ void Module2200::updateScene2221() { } void Module2200::updateScene2222() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2223(0); } else if (_field20 == 2) { @@ -957,11 +869,7 @@ void Module2200::updateScene2222() { } void Module2200::updateScene2223() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2224(0); } else if (_field20 == 2) { @@ -974,11 +882,7 @@ void Module2200::updateScene2223() { } void Module2200::updateScene2224() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2225(0); } else if (_field20 == 2) { @@ -991,11 +895,7 @@ void Module2200::updateScene2224() { } void Module2200::updateScene2225() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2226(0); } else if (_field20 == 2) { @@ -1008,11 +908,7 @@ void Module2200::updateScene2225() { } void Module2200::updateScene2226() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2227(0); } else if (_field20 == 2) { @@ -1025,11 +921,7 @@ void Module2200::updateScene2226() { } void Module2200::updateScene2227() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2228(0); } else if (_field20 == 2) { @@ -1042,11 +934,7 @@ void Module2200::updateScene2227() { } void Module2200::updateScene2228() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2229(0); } else if (_field20 == 2) { @@ -1059,11 +947,7 @@ void Module2200::updateScene2228() { } void Module2200::updateScene2229() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2230(0); } else if (_field20 == 2) { @@ -1076,11 +960,7 @@ void Module2200::updateScene2229() { } void Module2200::updateScene2230() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2231(0); } else if (_field20 == 2) { @@ -1093,11 +973,7 @@ void Module2200::updateScene2230() { } void Module2200::updateScene2231() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2232(0); } else if (_field20 == 2) { @@ -1110,11 +986,7 @@ void Module2200::updateScene2231() { } void Module2200::updateScene2232() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2233(0); } else if (_field20 == 2) { @@ -1127,11 +999,7 @@ void Module2200::updateScene2232() { } void Module2200::updateScene2233() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2234(0); } else if (_field20 == 2) { @@ -1144,11 +1012,7 @@ void Module2200::updateScene2233() { } void Module2200::updateScene2234() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2235(0); } else if (_field20 == 2) { @@ -1161,11 +1025,7 @@ void Module2200::updateScene2234() { } void Module2200::updateScene2235() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2243(0); } else if (_field20 == 2) { @@ -1178,11 +1038,7 @@ void Module2200::updateScene2235() { } void Module2200::updateScene2236() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2237(0); } else if (_field20 == 2) { @@ -1195,11 +1051,7 @@ void Module2200::updateScene2236() { } void Module2200::updateScene2237() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2238(0); } else if (_field20 == 2) { @@ -1212,11 +1064,7 @@ void Module2200::updateScene2237() { } void Module2200::updateScene2238() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2239(0); } else if (_field20 == 2) { @@ -1229,11 +1077,7 @@ void Module2200::updateScene2238() { } void Module2200::updateScene2239() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2240(0); } else if (_field20 == 2) { @@ -1246,11 +1090,7 @@ void Module2200::updateScene2239() { } void Module2200::updateScene2240() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2241(0); } else if (_field20 == 2) { @@ -1263,11 +1103,7 @@ void Module2200::updateScene2240() { } void Module2200::updateScene2241() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2242(0); } else if (_field20 == 2) { @@ -1280,11 +1116,7 @@ void Module2200::updateScene2241() { } void Module2200::updateScene2242() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2248(0); _childObject->handleUpdate(); @@ -1299,11 +1131,7 @@ void Module2200::updateScene2242() { } void Module2200::updateScene2243() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2244(0); } else if (_field20 == 2) { @@ -1316,11 +1144,7 @@ void Module2200::updateScene2243() { } void Module2200::updateScene2244() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2245(0); } else if (_field20 == 2) { @@ -1333,11 +1157,7 @@ void Module2200::updateScene2244() { } void Module2200::updateScene2245() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2246(0); } else if (_field20 == 2) { @@ -1350,11 +1170,7 @@ void Module2200::updateScene2245() { } void Module2200::updateScene2246() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2236(0); } else if (_field20 == 2) { @@ -1367,11 +1183,7 @@ void Module2200::updateScene2246() { } void Module2200::updateScene2247() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2210(0); } else if (_field20 == 2) { @@ -1384,11 +1196,7 @@ void Module2200::updateScene2247() { } void Module2200::updateScene2248() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene2242(1); _childObject->handleUpdate(); } diff --git a/engines/neverhood/module2300.cpp b/engines/neverhood/module2300.cpp index 19861ac7ca..60f8134929 100644 --- a/engines/neverhood/module2300.cpp +++ b/engines/neverhood/module2300.cpp @@ -125,11 +125,7 @@ void Module2300::createScene2305(int which) { } void Module2300::updateScene2301() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2302(4); _childObject->handleUpdate(); @@ -140,28 +136,7 @@ void Module2300::updateScene2301() { } void Module2300::updateScene2302() { - _childObject->handleUpdate(); -#if 0 // TODO - NavigationScene *navigationScene = (NavigationScene*)_childObject; - if (_flag && navigationScene->getSoundFlag1() && navigationScene->getNavigationIndex() == 4 && - navigationScene->getSmackerPlayer() && navigationScene->getSmackerPlayer()->getFrameNumber() % 2) { - _volume++; - Sound1ChList_setVolume(0x90F0D1C3, _volume); - } -#endif -#if 0 // TODO - if (navigationScene->getSoundFlag1() && navigationScene->getNavigationIndex() == 0 && - navigationScene->getSmackerPlayer() && navigationScene->getSmackerPlayer()->getFrameNumber() == 50) { - Sound1ChList_sub_407C70(0x1A214010, 0x48498E46, 0x50399F64); - Sound1ChList_setVolume(0x48498E46, 70); - Sound1ChList_setVolume(0x50399F64, 70); - } -#endif - if (_done) { - debug("SCENE 2302 DONE; _field20 = %d", _field20); - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { createScene2301(0); _childObject->handleUpdate(); @@ -179,15 +154,28 @@ void Module2300::updateScene2302() { } else { sendMessage(_parentModule, 0x1009, 4); } + } else { +#if 0 // TODO + NavigationScene *navigationScene = (NavigationScene*)_childObject; + if (_flag && navigationScene->getSoundFlag1() && navigationScene->getNavigationIndex() == 4 && + navigationScene->getSmackerPlayer() && navigationScene->getSmackerPlayer()->getFrameNumber() % 2) { + _volume++; + Sound1ChList_setVolume(0x90F0D1C3, _volume); + } +#endif +#if 0 // TODO + if (navigationScene->getSoundFlag1() && navigationScene->getNavigationIndex() == 0 && + navigationScene->getSmackerPlayer() && navigationScene->getSmackerPlayer()->getFrameNumber() == 50) { + Sound1ChList_sub_407C70(0x1A214010, 0x48498E46, 0x50399F64); + Sound1ChList_setVolume(0x48498E46, 70); + Sound1ChList_setVolume(0x50399F64, 70); + } +#endif } } void Module2300::updateScene2303() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { sendMessage(_parentModule, 0x1009, 3); } else { @@ -195,44 +183,30 @@ void Module2300::updateScene2303() { _childObject->handleUpdate(); } } - if (_field24 >= 0) { - if (_field24 == 1) { - // TODO _resourceTable1.setResourceList(ex_sub_479D00(0), true); - // TODO _resourceTable2.loadResources(); - } - _field24 = -1; - } } void Module2300::updateScene2304() { - _childObject->handleUpdate(); -#if 0 // TODO - NavigationScene *navigationScene = (NavigationScene*)_childObject; - if (_flag && navigationScene->getSoundFlag1() && navigationScene->getSmackerPlayer() && - navigationScene->getSmackerPlayer()->getFrameNumber() % 2) { - _volume--; - Sound1ChList_setVolume(0x90F0D1C3, _volume); - } -#endif - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { if (_field20 == 1) { sendMessage(_parentModule, 0x1009, 2); } else { createScene2302(1); _childObject->handleUpdate(); } + } else { +#if 0 // TODO + NavigationScene *navigationScene = (NavigationScene*)_childObject; + if (_flag && navigationScene->getSoundFlag1() && navigationScene->getSmackerPlayer() && + navigationScene->getSmackerPlayer()->getFrameNumber() % 2) { + _volume--; + Sound1ChList_setVolume(0x90F0D1C3, _volume); + } +#endif } } void Module2300::updateScene2305() { - _childObject->handleUpdate(); - if (_done) { - _done = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { // TODO Sound1ChList_sub_4080B0(false); createScene2302(2); _childObject->handleUpdate(); diff --git a/engines/neverhood/module3000.cpp b/engines/neverhood/module3000.cpp index cc617a3fbc..bccc72352b 100644 --- a/engines/neverhood/module3000.cpp +++ b/engines/neverhood/module3000.cpp @@ -27,7 +27,7 @@ namespace Neverhood { Module3000::Module3000(NeverhoodEngine *vm, Module *parentModule, int which) - : Module(vm, parentModule), _moduleDone(false), _soundVolume(0) { + : Module(vm, parentModule), _soundVolume(0) { debug("Create Module3000(%d)", which); @@ -95,25 +95,12 @@ Module3000::Module3000(NeverhoodEngine *vm, Module *parentModule, int which) createScene3006(1); } - SetMessageHandler(&Module3000::handleMessage); - } Module3000::~Module3000() { // TODO Sound1ChList_sub_407A50(0x81293110); } -uint32 Module3000::handleMessage(int messageNum, const MessageParam ¶m, Entity *sender) { - uint32 messageResult = Module::handleMessage(messageNum, param, sender); - switch (messageNum) { - case 0x1009: - _moduleDone = true; - _moduleDoneStatus = param.asInteger(); - break; - } - return messageResult; -} - void Module3000::createScene3002(int which) { _vm->gameState().sceneNum = 1; if (!getGlobalVar(0x01BA1A52)) { @@ -276,20 +263,20 @@ void Module3000::updateScene3002() { } } #endif - if (_moduleDone) { + if (_done) { int areaType = navigationScene()->getNavigationAreaType(); - _moduleDone = false; + _done = false; delete _childObject; _childObject = NULL; if (!getGlobalVar(0x01BA1A52)) { - if (_moduleDoneStatus == 0) { + if (_field20 == 0) { createScene3010(-1); _childObject->handleUpdate(); - } else if (_moduleDoneStatus == 1) { + } else if (_field20 == 1) { sendMessage(_parentModule, 0x1009, 0); } } else { - if (_moduleDoneStatus == 0) { + if (_field20 == 0) { if (areaType == 2) { createScene3003(0); _childObject->handleUpdate(); @@ -297,7 +284,7 @@ void Module3000::updateScene3002() { //createScene3002b(-1); _childObject->handleUpdate(); } - } else if (_moduleDoneStatus == 1) { + } else if (_field20 == 1) { sendMessage(_parentModule, 0x1009, 0); } } @@ -305,11 +292,7 @@ void Module3000::updateScene3002() { } void Module3000::updateScene3002b() { - _childObject->handleUpdate(); - if (_moduleDone) { - _moduleDone = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { switch (_vm->gameState().sceneNum) { case 1: if (getGlobalVar(0x01BA1A52)) { @@ -339,79 +322,51 @@ void Module3000::updateScene3002b() { } void Module3000::updateScene3003() { - _childObject->handleUpdate(); -#if 0 // ALL TODO - if (navigationScene()->getSoundFlag1()) { - uint32 frameNumber = navigationScene()->getFrameNumber(); - int navigationIndex = navigationScene()->getIndex(); - if (_flag && _soundVolume > 1 && frameNumber % 2) { - _soundVolume--; - // TODO Sound1ChList_setVolume(0x90F0D1C3, _soundVolume); - } - if (navigationIndex == 0) { - if (frameNumber == 35) { - // TODO Sound1ChList_sub_407C70(0x81293110, 0x41861371, 0x43A2507F, 0); - } - } else if (navigationIndex == 1) { - if (frameNumber == 55) { - // TODO Sound1ChList_sub_407C70(0x81293110, 0x48498E46, 0x50399F64, 0); - // TODO Sound1ChList_setVolume(0x48498E46, 70); - // TODO Sound1ChList_setVolume(0x50399F64, 70); - } - } - } -#endif - if (_moduleDone) { - _moduleDone = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { // TODO Sound1ChList_sub_407C70(0x81293110, 0x41861371, 0x43A2507F, 0); if (_flag) { _soundVolume = 0; // TODO Sound1ChList_setVolume(0x90F0D1C3, 0); } - if (_moduleDoneStatus == 0) { + if (_field20 == 0) { createScene3004(0); _childObject->handleUpdate(); - } else if (_moduleDoneStatus == 1) { + } else if (_field20 == 1) { setGlobalVar(0x01BA1A52, 0); createScene3002(1); _childObject->handleUpdate(); } - } -} - -void Module3000::updateScene3004() { - _childObject->handleUpdate(); + } else { #if 0 // ALL TODO - if (navigationScene()->getSoundFlag1()) { - uint32 frameNumber = navigationScene()->getFrameNumber(); - int navigationIndex = navigationScene()->getIndex(); - if (navigationIndex == 2) { - if (frameNumber == 40) { - // TODO Sound1ChList_sub_407C70(0x81293110, 0x40030A51, 0xC862CA15, 0); - } - if (_flag && _soundVolume < 90 && frameNumber % 2) { - if (frameNumber == 0) - _soundVolume = 40; - else - _soundVolume++; + if (navigationScene()->getSoundFlag1()) { + uint32 frameNumber = navigationScene()->getFrameNumber(); + int navigationIndex = navigationScene()->getIndex(); + if (_flag && _soundVolume > 1 && frameNumber % 2) { + _soundVolume--; // TODO Sound1ChList_setVolume(0x90F0D1C3, _soundVolume); } + if (navigationIndex == 0) { + if (frameNumber == 35) { + // TODO Sound1ChList_sub_407C70(0x81293110, 0x41861371, 0x43A2507F, 0); + } + } else if (navigationIndex == 1) { + if (frameNumber == 55) { + // TODO Sound1ChList_sub_407C70(0x81293110, 0x48498E46, 0x50399F64, 0); + // TODO Sound1ChList_setVolume(0x48498E46, 70); + // TODO Sound1ChList_setVolume(0x50399F64, 70); + } + } } - } #endif - if (_moduleDone) { - _moduleDone = false; - delete _childObject; - _childObject = NULL; - - debug("_moduleDoneStatus = %d", _moduleDoneStatus); - - if (_moduleDoneStatus == 1) { + } +} + +void Module3000::updateScene3004() { + if (!updateChild()) { + if (_field20 == 1) { createScene3005(0); _childObject->handleUpdate(); - } else if (_moduleDoneStatus == 3) { + } else if (_field20 == 3) { createScene3011(-1); _childObject->handleUpdate(); } else if (getGlobalVar(0x09221A62)) { @@ -421,54 +376,64 @@ void Module3000::updateScene3004() { createScene3003(1); _childObject->handleUpdate(); } + } else { +#if 0 // ALL TODO + if (navigationScene()->getSoundFlag1()) { + uint32 frameNumber = navigationScene()->getFrameNumber(); + int navigationIndex = navigationScene()->getIndex(); + if (navigationIndex == 2) { + if (frameNumber == 40) { + // TODO Sound1ChList_sub_407C70(0x81293110, 0x40030A51, 0xC862CA15, 0); + } + if (_flag && _soundVolume < 90 && frameNumber % 2) { + if (frameNumber == 0) + _soundVolume = 40; + else + _soundVolume++; + // TODO Sound1ChList_setVolume(0x90F0D1C3, _soundVolume); + } + } + } +#endif } } void Module3000::updateScene3005() { - _childObject->handleUpdate(); - if (_moduleDone) { - _moduleDone = false; - delete _childObject; - _childObject = NULL; - if (_moduleDoneStatus == 0) { + if (!updateChild()) { + if (_field20 == 0) { sendMessage(_parentModule, 0x1009, 1); - } else if (_moduleDoneStatus == 1) { + } else if (_field20 == 1) { createScene3008(-1); _childObject->handleUpdate(); - } else if (_moduleDoneStatus == 2) { + } else if (_field20 == 2) { createScene3004(3); _childObject->handleUpdate(); } } - // NOTE: Skipped resource preloading stuff } void Module3000::updateScene3006() { - _childObject->handleUpdate(); -#if 0 // ALL TODO - if (navigationScene()->getSoundFlag1() && navigationScene()->getIndex() == 0) { - // TODO Sound1ChList_sub_4080B0(false); - } -#endif - if (_moduleDone) { - _moduleDone = false; - delete _childObject; - _childObject = NULL; - if (_moduleDoneStatus == 0) { + if (!updateChild()) { + if (_field20 == 0) { createScene3007(0); - _childObject->handleUpdate(); - } else if (_moduleDoneStatus == 1) { + } else if (_field20 == 1) { createScene3004(0); - _childObject->handleUpdate(); } + _childObject->handleUpdate(); + } else { +#if 0 // ALL TODO + if (navigationScene()->getSoundFlag1() && navigationScene()->getIndex() == 0) { + // TODO Sound1ChList_sub_4080B0(false); + } +#endif } } void Module3000::updateScene3007() { _childObject->handleUpdate(); - if (_moduleDone) { + if (_done) { int areaType = navigationScene()->getNavigationAreaType(); - _moduleDone = false; + _done = false; delete _childObject; _childObject = NULL; if (areaType == 4) { @@ -482,14 +447,9 @@ void Module3000::updateScene3007() { } void Module3000::updateScene3009() { - _childObject->handleUpdate(); - // TODO... - if (_moduleDone) { - _moduleDone = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { _flag = getGlobalVar(0x10938830); // CHECKME - if (_moduleDoneStatus != 1) { + if (_field20 != 1) { // TODO: Sound1ChList_setSoundValuesMulti(dword_4B7FC8, true, 0, 0, 0, 0): createScene3005(1); _childObject->handleUpdate(); @@ -505,15 +465,11 @@ void Module3000::updateScene3009() { } void Module3000::updateScene3010() { - _childObject->handleUpdate(); - if (_moduleDone) { - _moduleDone = false; - delete _childObject; - _childObject = NULL; - if (_moduleDoneStatus == 0 || _moduleDoneStatus == 2) { + if (!updateChild()) { + if (_field20 == 0 || _field20 == 2) { createScene3002(0); _childObject->handleUpdate(); - } else if (_moduleDoneStatus == 1) { + } else if (_field20 == 1) { createScene3002b(-1); _childObject->handleUpdate(); } @@ -521,11 +477,7 @@ void Module3000::updateScene3010() { } void Module3000::updateScene3011() { - _childObject->handleUpdate(); - if (_moduleDone) { - _moduleDone = false; - delete _childObject; - _childObject = NULL; + if (!updateChild()) { createScene3004(3); _childObject->handleUpdate(); } diff --git a/engines/neverhood/module3000.h b/engines/neverhood/module3000.h index 64a4b76817..63e5261207 100644 --- a/engines/neverhood/module3000.h +++ b/engines/neverhood/module3000.h @@ -35,8 +35,6 @@ public: Module3000(NeverhoodEngine *vm, Module *parentModule, int which); virtual ~Module3000(); protected: - bool _moduleDone; - int _moduleDoneStatus; int _soundVolume; bool _flag; uint32 handleMessage(int messageNum, const MessageParam ¶m, Entity *sender); diff --git a/engines/neverhood/sprite.cpp b/engines/neverhood/sprite.cpp index 828c0dd08e..9dc1d8bc7e 100644 --- a/engines/neverhood/sprite.cpp +++ b/engines/neverhood/sprite.cpp @@ -117,12 +117,8 @@ StaticSprite::StaticSprite(NeverhoodEngine *vm, const char *filename, int surfac StaticSprite::StaticSprite(NeverhoodEngine *vm, uint32 fileHash, int surfacePriority, int16 x, int16 y, int16 width, int16 height) : Sprite(vm, 0), _spriteResource(vm) { - - debug("StaticSprite::StaticSprite(%08X)", fileHash); - _name = "StaticSprite"; init(fileHash, surfacePriority, x, y, width, height); - } void StaticSprite::init(uint32 fileHash, int surfacePriority, int16 x, int16 y, int16 width, int16 height) { diff --git a/engines/neverhood/sprite.h b/engines/neverhood/sprite.h index 16d79319fd..ff1830469d 100644 --- a/engines/neverhood/sprite.h +++ b/engines/neverhood/sprite.h @@ -31,8 +31,8 @@ namespace Neverhood { #define SetSpriteCallback(callback) _spriteUpdateCb = static_cast (callback); debug(2, "SetSpriteCallback(" #callback ")"); _spriteUpdateCbName = #callback -#define SetFilterX(callback) _filterXCb = static_cast (callback); debug("SetFilterX(" #callback ")") -#define SetFilterY(callback) _filterYCb = static_cast (callback); debug("SetFilterY(" #callback ")") +#define SetFilterX(callback) _filterXCb = static_cast (callback); debug(2, "SetFilterX(" #callback ")") +#define SetFilterY(callback) _filterYCb = static_cast (callback); debug(2, "SetFilterY(" #callback ")") const int16 kDefPosition = -32768; @@ -99,9 +99,9 @@ protected: void init(uint32 fileHash, int surfacePriority, int16 x = kDefPosition, int16 y = kDefPosition, int16 width = 0, int16 height = 0); }; -#define SetAnimationCallback1(callback) _callback1Cb = static_cast (callback); debug("SetAnimationCallback1(" #callback ")"); _callback1CbName = #callback -#define SetAnimationCallback2(callback) _callback2Cb = static_cast (callback); debug("SetAnimationCallback2(" #callback ")"); _callback2CbName = #callback -#define SetAnimationCallback3(callback) _callback3Cb = static_cast (callback); debug("SetAnimationCallback3(" #callback ")"); _callback3CbName = #callback +#define SetAnimationCallback1(callback) _callback1Cb = static_cast (callback); debug(2, "SetAnimationCallback1(" #callback ")"); _callback1CbName = #callback +#define SetAnimationCallback2(callback) _callback2Cb = static_cast (callback); debug(2, "SetAnimationCallback2(" #callback ")"); _callback2CbName = #callback +#define SetAnimationCallback3(callback) _callback3Cb = static_cast (callback); debug(2, "SetAnimationCallback3(" #callback ")"); _callback3CbName = #callback #define AnimationCallback(callback) static_cast (callback) class AnimatedSprite : public Sprite { -- cgit v1.2.3