diff options
-rw-r--r-- | engines/neverhood/entity.h | 1 | ||||
-rw-r--r-- | engines/neverhood/module.mk | 1 | ||||
-rw-r--r-- | engines/neverhood/module1500.cpp | 93 | ||||
-rw-r--r-- | engines/neverhood/module1500.h | 47 | ||||
-rw-r--r-- | engines/neverhood/neverhood.h | 4 |
5 files changed, 145 insertions, 1 deletions
diff --git a/engines/neverhood/entity.h b/engines/neverhood/entity.h index 0b0fc74e19..fe5d07e585 100644 --- a/engines/neverhood/entity.h +++ b/engines/neverhood/entity.h @@ -52,6 +52,7 @@ public: if (_updateHandlerCb) (this->*_updateHandlerCb)(); } + bool hasMessageHandler() const { return _messageHandlerCb != NULL; } uint32 sendMessage(int messageNum, const MessageParam ¶m, Entity *sender) { return _messageHandlerCb ? (this->*_messageHandlerCb)(messageNum, param, sender) : 0; } diff --git a/engines/neverhood/module.mk b/engines/neverhood/module.mk index ef6caba6dd..97ad70e654 100644 --- a/engines/neverhood/module.mk +++ b/engines/neverhood/module.mk @@ -7,6 +7,7 @@ MODULE_OBJS = \ gamemodule.o \ graphics.o \ module.o \ + module1500.o \ neverhood.o \ palette.o \ resource.o \ diff --git a/engines/neverhood/module1500.cpp b/engines/neverhood/module1500.cpp new file mode 100644 index 0000000000..05a3bec907 --- /dev/null +++ b/engines/neverhood/module1500.cpp @@ -0,0 +1,93 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "neverhood/module1500.h" + +namespace Neverhood { + +Module1500::Module1500(NeverhoodEngine *vm, Module *parentModule, int which, bool flag) + : Module(vm, parentModule), _flag(flag) { + + if (which < 0) { + switch (_vm->gameState().sceneNum) { + case 1: + createScene1502(); + break; + case 2: + createScene1503(); + break; + case 3: + createScene1504(); + break; + default: + createScene1501(); + } + } else { + createScene1504(); + } + +} + +void Module1500::update() { + _childObject->handleUpdate(); + if (_done) { + _done = false; + delete _childObject; + _childObject = NULL; + switch (_vm->gameState().sceneNum) { + case 0: + createScene1502(); + break; + case 1: + if (_flag) { + createScene1503(); + } else { + _parentModule->sendMessage(0x1009, 0, this); + } + break; + case 3: + createScene1501(); + break; + default: + _parentModule->sendMessage(0x1009, 0, this); + break; + } + } +} + +void Module1500::createScene1501() { + // TODO +} + +void Module1500::createScene1502() { + // TODO +} + +void Module1500::createScene1503() { + // TODO +} + +void Module1500::createScene1504() { + // TODO +} + +} // End of namespace Neverhood diff --git a/engines/neverhood/module1500.h b/engines/neverhood/module1500.h new file mode 100644 index 0000000000..d4a4310cdc --- /dev/null +++ b/engines/neverhood/module1500.h @@ -0,0 +1,47 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// TODO: I couldn't come up with a better name than 'Module' so far + +#ifndef NEVERHOOD_MODULE1500_H +#define NEVERHOOD_MODULE1500_H + +#include "neverhood/neverhood.h" +#include "neverhood/module.h" + +namespace Neverhood { + +class Module1500 : public Module { +public: + Module1500(NeverhoodEngine *vm, Module *parentModule, int which, bool flag); +protected: + bool _flag; + void update(); + void createScene1501(); + void createScene1502(); + void createScene1503(); + void createScene1504(); +}; + +} // End of namespace Neverhood + +#endif /* NEVERHOOD_MODULE1500_H */ diff --git a/engines/neverhood/neverhood.h b/engines/neverhood/neverhood.h index edbf165654..8a95b05f94 100644 --- a/engines/neverhood/neverhood.h +++ b/engines/neverhood/neverhood.h @@ -46,7 +46,7 @@ struct NeverhoodGameDescription; class ResourceMan; struct GameState { - int field1; + int sceneNum; }; class NeverhoodEngine : public ::Engine { @@ -111,6 +111,8 @@ public: static kReadSaveHeaderError readSaveHeader(Common::SeekableReadStream *in, bool loadThumbnail, SaveHeader &header); #endif + GameState& gameState() { return _gameState; } + public: }; |