mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-18 23:57:32 +00:00
NEVERHOOD: Add skeleton for Module1000
- Add dummies for game variable access
This commit is contained in:
parent
21eb88053c
commit
9d0e90bcd2
@ -22,6 +22,7 @@
|
||||
|
||||
#include "neverhood/gamemodule.h"
|
||||
|
||||
#include "neverhood/module1000.h"
|
||||
#include "neverhood/module1500.h"
|
||||
|
||||
namespace Neverhood {
|
||||
@ -84,12 +85,14 @@ uint32 GameModule::handleMessage(int messageNum, const MessageParam ¶m, Enti
|
||||
|
||||
void GameModule::startup() {
|
||||
// TODO: Displaying of error text probably not needed in ScummVM
|
||||
createModule1500(0);
|
||||
// createModule1500(0); // Logos and intro video
|
||||
|
||||
createModule1000(0);
|
||||
}
|
||||
|
||||
void GameModule::createModule1500(int which) {
|
||||
_someFlag1 = false;
|
||||
// TODO *getGlobalGameVarValuePtr(0x91080831) = 0x0F10114;
|
||||
_vm->setGlobalVar(0x91080831, 0x00F10114);
|
||||
_childObject = new Module1500(_vm, this, which, true);
|
||||
SetUpdateHandler(&GameModule::updateModule1500);
|
||||
}
|
||||
@ -102,8 +105,28 @@ void GameModule::updateModule1500() {
|
||||
_done = false;
|
||||
delete _childObject;
|
||||
_childObject = NULL;
|
||||
createModule1000(0);
|
||||
_childObject->handleUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
void GameModule::createModule1000(int which) {
|
||||
_vm->setGlobalVar(0x91080831, 0x03294419);
|
||||
_childObject = new Module1000(_vm, this, which);
|
||||
SetUpdateHandler(&GameModule::updateModule1000);
|
||||
}
|
||||
|
||||
void GameModule::updateModule1000() {
|
||||
if (!_childObject)
|
||||
return;
|
||||
_childObject->handleUpdate();
|
||||
if (_done) {
|
||||
_done = false;
|
||||
// TODO _resourceTable3.load();
|
||||
delete _childObject;
|
||||
_childObject = NULL;
|
||||
error("Done...");
|
||||
// TODO createModule1000();
|
||||
// TODO createModule2300();
|
||||
// TODO _childObject->handleUpdate();
|
||||
}
|
||||
}
|
||||
|
@ -49,6 +49,8 @@ protected:
|
||||
void startup();
|
||||
void createModule1500(int which);
|
||||
void updateModule1500();
|
||||
void createModule1000(int which);
|
||||
void updateModule1000();
|
||||
};
|
||||
|
||||
} // End of namespace Neverhood
|
||||
|
@ -8,6 +8,7 @@ MODULE_OBJS = \
|
||||
gamemodule.o \
|
||||
graphics.o \
|
||||
module.o \
|
||||
module1000.o \
|
||||
module1500.o \
|
||||
neverhood.o \
|
||||
palette.o \
|
||||
|
116
engines/neverhood/module1000.cpp
Normal file
116
engines/neverhood/module1000.cpp
Normal file
@ -0,0 +1,116 @@
|
||||
/* 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/module1000.h"
|
||||
|
||||
namespace Neverhood {
|
||||
|
||||
Module1000::Module1000(NeverhoodEngine *vm, Module *parentModule, int which)
|
||||
: Module(vm, parentModule) {
|
||||
|
||||
debug("Create Module1000(%d)", which);
|
||||
|
||||
_musicFileHash = _vm->getGlobalVar(0xD0A14D10) ? 0x81106480 : 0x00103144;
|
||||
|
||||
// TODO Music18hList_add(0x03294419, 0x061880C6);
|
||||
// TODO Music18hList_add(0x03294419, _musicFileHash);
|
||||
|
||||
if (which < 0) {
|
||||
switch (_vm->gameState().sceneNum) {
|
||||
case 0:
|
||||
createScene1001(-1);
|
||||
break;
|
||||
case 1:
|
||||
createScene1002(-1);
|
||||
break;
|
||||
case 2:
|
||||
createScene1003(-1);
|
||||
break;
|
||||
case 3:
|
||||
createScene1004(-1);
|
||||
break;
|
||||
case 4:
|
||||
createScene1005(-1);
|
||||
break;
|
||||
}
|
||||
} else if (which == 0) {
|
||||
createScene1001(0);
|
||||
} else if (which == 1) {
|
||||
createScene1002(1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Module1000::~Module1000() {
|
||||
// TODO Music18hList_deleteGroup(0x03294419);
|
||||
}
|
||||
|
||||
void Module1000::createScene1001(int which) {
|
||||
debug("createScene1501");
|
||||
_vm->gameState().sceneNum = 0;
|
||||
_childObject = new Scene1001(_vm, this, which);
|
||||
// TODO ResourceTable_multiLoad(&_resourceTable1, &_resourceTable2, &_resourceTable3);
|
||||
// TODO Music18hList_play(0x061880C6, 0, 0, 1);
|
||||
SetUpdateHandler(&Module1000::updateScene1001);
|
||||
}
|
||||
|
||||
void Module1000::createScene1002(int which) {
|
||||
}
|
||||
|
||||
void Module1000::createScene1003(int which) {
|
||||
}
|
||||
|
||||
void Module1000::createScene1004(int which) {
|
||||
}
|
||||
|
||||
void Module1000::createScene1005(int which) {
|
||||
}
|
||||
|
||||
void Module1000::updateScene1001() {
|
||||
}
|
||||
|
||||
void Module1000::updateScene1002() {
|
||||
}
|
||||
|
||||
void Module1000::updateScene1003() {
|
||||
}
|
||||
|
||||
void Module1000::updateScene1004() {
|
||||
}
|
||||
|
||||
void Module1000::updateScene1005() {
|
||||
}
|
||||
|
||||
// Scene1001
|
||||
|
||||
Scene1001::Scene1001(NeverhoodEngine *vm, Module *parentModule, int which)
|
||||
: Scene(vm, parentModule, true) {
|
||||
}
|
||||
|
||||
void Scene1001::update() {
|
||||
}
|
||||
|
||||
uint32 Scene1001::handleMessage(int messageNum, const MessageParam ¶m, Entity *sender) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // End of namespace Neverhood
|
71
engines/neverhood/module1000.h
Normal file
71
engines/neverhood/module1000.h
Normal file
@ -0,0 +1,71 @@
|
||||
/* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef NEVERHOOD_MODULE1000_H
|
||||
#define NEVERHOOD_MODULE1000_H
|
||||
|
||||
#include "neverhood/neverhood.h"
|
||||
#include "neverhood/module.h"
|
||||
#include "neverhood/scene.h"
|
||||
|
||||
namespace Neverhood {
|
||||
|
||||
class Module1000 : public Module {
|
||||
public:
|
||||
Module1000(NeverhoodEngine *vm, Module *parentModule, int which);
|
||||
virtual ~Module1000();
|
||||
protected:
|
||||
uint32 _musicFileHash;
|
||||
// TODO ResourceTable _resourceTable1;
|
||||
// TODO ResourceTable _resourceTable2;
|
||||
// TODO ResourceTable _resourceTable3;
|
||||
// TODO ResourceTable _resourceTable4;
|
||||
void createScene1001(int which);
|
||||
void createScene1002(int which);
|
||||
void createScene1003(int which);
|
||||
void createScene1004(int which);
|
||||
void createScene1005(int which);
|
||||
void updateScene1001();
|
||||
void updateScene1002();
|
||||
void updateScene1003();
|
||||
void updateScene1004();
|
||||
void updateScene1005();
|
||||
};
|
||||
|
||||
class Scene1001 : public Scene {
|
||||
public:
|
||||
Scene1001(NeverhoodEngine *vm, Module *parentModule, int which);
|
||||
protected:
|
||||
Sprite *_class511;
|
||||
Sprite *_class508;
|
||||
Sprite *_class509;
|
||||
Sprite *_class608;
|
||||
Sprite *_class510;
|
||||
int16 _fieldE4;
|
||||
int16 _fieldE6;
|
||||
void update();
|
||||
uint32 handleMessage(int messageNum, const MessageParam ¶m, Entity *sender);
|
||||
};
|
||||
|
||||
} // End of namespace Neverhood
|
||||
|
||||
#endif /* NEVERHOOD_MODULE1000_H */
|
@ -185,4 +185,22 @@ Common::Error NeverhoodEngine::run() {
|
||||
return Common::kNoError;
|
||||
}
|
||||
|
||||
uint32 NeverhoodEngine::getGlobalVar(uint32 nameHash) {
|
||||
// TODO
|
||||
return 0;
|
||||
}
|
||||
|
||||
void NeverhoodEngine::setGlobalVar(uint32 nameHash, uint32 value) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
uint32 NeverhoodEngine::getSubVar(uint32 nameHash, uint32 subNameHash) {
|
||||
// TODO
|
||||
return 0;
|
||||
}
|
||||
|
||||
void NeverhoodEngine::setSubVar(uint32 nameHash, uint32 subNameHash, uint32 value) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
} // End of namespace Neverhood
|
||||
|
@ -110,6 +110,10 @@ public:
|
||||
#endif
|
||||
|
||||
GameState& gameState() { return _gameState; }
|
||||
uint32 getGlobalVar(uint32 nameHash);
|
||||
void setGlobalVar(uint32 nameHash, uint32 value);
|
||||
uint32 getSubVar(uint32 nameHash, uint32 subNameHash);
|
||||
void setSubVar(uint32 nameHash, uint32 subNameHash, uint32 value);
|
||||
|
||||
public:
|
||||
|
||||
|
@ -32,12 +32,10 @@ SmackerScene::SmackerScene(NeverhoodEngine *vm, Module *parentModule, bool doubl
|
||||
|
||||
// NOTE: Merged from SmackerScene::init, maybe split again if needed (incl. parameter flags)
|
||||
|
||||
/* TODO
|
||||
if (_vm->getGlobalVarValue(0x06C02850)) {
|
||||
if (_vm->getGlobalVar(0x06C02850)) {
|
||||
_flag1 = true;
|
||||
_canAbort = true;
|
||||
}
|
||||
*/
|
||||
|
||||
if (_doubleSurface) {
|
||||
_vm->_screen->clear();
|
||||
@ -78,9 +76,9 @@ void SmackerScene::nextVideo() {
|
||||
_parentModule->sendMessage(0x1009, 0, this);
|
||||
return;
|
||||
}
|
||||
// TODO _fieldDF = getGlobalSubVarValue(0x00800410, smackerFileHash);
|
||||
_fieldDF = _vm->getSubVar(0x00800410, smackerFileHash);
|
||||
if (!_fieldDF) {
|
||||
// TODO setGlobalSubVarValue(0x00800410, smackerFileHash) = 1;
|
||||
_vm->setSubVar(0x00800410, smackerFileHash, 1);
|
||||
}
|
||||
if (_fileHashListIndex == 0) {
|
||||
_smackerPlayer = new SmackerPlayer(_vm, this, smackerFileHash, _doubleSurface, false);
|
||||
|
Loading…
Reference in New Issue
Block a user