Skip to content

Commit

Permalink
NEVERHOOD: Implement Module2000
Browse files Browse the repository at this point in the history
  • Loading branch information
johndoe123 authored and wjp committed May 8, 2013
1 parent 9d12661 commit 5fcc3af
Show file tree
Hide file tree
Showing 7 changed files with 391 additions and 7 deletions.
32 changes: 26 additions & 6 deletions engines/neverhood/gamemodule.cpp
Expand Up @@ -29,6 +29,7 @@
#include "neverhood/module1500.h"
#include "neverhood/module1700.h"
#include "neverhood/module1800.h"
#include "neverhood/module2000.h"
#include "neverhood/module2300.h"
#include "neverhood/module3000.h"

Expand Down Expand Up @@ -227,14 +228,18 @@ void GameModule::startup() {
//createModule1700(-1);
//createModule1700(1);
//createModule1400(-1);
#if 1
#if 0
_vm->gameState().sceneNum = 10;
createModule3000(-1);
#endif
#if 0
_vm->gameState().sceneNum = 0;
createModule1800(-1);
#endif
#if 1
_vm->gameState().sceneNum = 0;
createModule2000(-1);
#endif
}

void GameModule::createModule1000(int which) {
Expand Down Expand Up @@ -284,11 +289,7 @@ void GameModule::updateModule1200() {

void GameModule::createModule1400(int which) {
setGlobalVar(0x91080831, 0x00AD0012);
//_childObject = new Module1400(_vm, this, which);

_vm->gameState().sceneNum = 9;
_childObject = new Module3000(_vm, this, -1);

_childObject = new Module1400(_vm, this, which);
SetUpdateHandler(&GameModule::updateModule1400);
}

Expand Down Expand Up @@ -384,6 +385,25 @@ void GameModule::updateModule1800() {
}
}

void GameModule::createModule2000(int which) {
setGlobalVar(0x91080831, 0x08250000);
_childObject = new Module2000(_vm, this, which);
SetUpdateHandler(&GameModule::updateModule2000);
}

void GameModule::updateModule2000() {
if (!_childObject)
return;
_childObject->handleUpdate();
if (_done) {
_done = false;
delete _childObject;
_childObject = NULL;
// TODO createModule2900(4);
_childObject->handleUpdate();
}
}

void GameModule::createModule2300(int which) {
setGlobalVar(0x91080831, 0x1A214010);
_childObject = new Module2300(_vm, this, which);
Expand Down
2 changes: 2 additions & 0 deletions engines/neverhood/gamemodule.h
Expand Up @@ -63,6 +63,8 @@ class GameModule : public Module {
void updateModule1700();
void createModule1800(int which);
void updateModule1800();
void createModule2000(int which);
void updateModule2000();
void createModule2200(int which);
void createModule2300(int which);
void updateModule2300();
Expand Down
98 changes: 98 additions & 0 deletions engines/neverhood/klayman.cpp
Expand Up @@ -3324,4 +3324,102 @@ void KmScene1705::sub468B10() {
SetMessageHandler(&KmScene1705::handleMessage4689A0);
}

KmScene2001::KmScene2001(NeverhoodEngine *vm, Entity *parentScene, int16 x, int16 y)
: Klayman(vm, parentScene, x, y, 1000, 1000), _flag(false) {

// Empty
}

uint32 KmScene2001::xHandleMessage(int messageNum, const MessageParam &param) {
switch (messageNum) {
case 0x2000:
_flag = param.asInteger() != 0;
break;
case 0x4001:
case 0x4800:
sub41C930(param.asPoint().x, false);
break;
case 0x4004:
if (_flag) {
setCallback2(AnimationCallback(&Klayman::sub421350));
} else {
setCallback2(AnimationCallback(&Klayman::sub41FC80));
}
break;
case 0x4804:
if (param.asInteger() != 0) {
_x4 = param.asInteger();
setCallback2(AnimationCallback(&Klayman::sub41F9E0));
} else {
setCallback2(AnimationCallback(&Klayman::sub41FC40));
}
break;
case 0x4817:
setDoDeltaX(param.asInteger());
sub41C7B0();
break;
case 0x481D:
if (_flag) {
setCallback2(AnimationCallback(&Klayman::sub4214D0));
}
break;
case 0x481E:
if (_flag) {
setCallback2(AnimationCallback(&Klayman::sub421510));
}
break;
case 0x4834:
setCallback2(AnimationCallback(&Klayman::sub421160));
break;
case 0x4835:
_parentScene->sendMessage(0x2000, 1, this);
_flag = true;
setCallback2(AnimationCallback(&Klayman::sub4212C0));
break;
case 0x4836:
_parentScene->sendMessage(0x2000, 0, this);
_flag = false;
setCallback2(AnimationCallback(&Klayman::sub421310));
break;
case 0x483D:
sub440230();
break;
case 0x483E:
sub440270();
break;
}
return 0;
}

uint32 KmScene2001::handleMessage4401A0(int messageNum, const MessageParam &param, Entity *sender) {
uint32 messageResult = handleMessage41D480(messageNum, param, sender);
switch (messageNum) {
case 0x100D:
if (param.asInteger() == 0x4E0A2C24) {
_soundResource1.play(0x85B10BB8);
} if (param.asInteger() == 0x4E6A0CA0) {
_soundResource1.play(0xC5B709B0);
}
break;
}
}

void KmScene2001::sub440230() {
_status2 = 0;
_flagE5 = false;
setFileHash(0xBE68CC54, 0, -1);
SetUpdateHandler(&Klayman::update);
SetSpriteCallback(NULL);
SetMessageHandler(&KmScene2001::handleMessage4401A0);
}

void KmScene2001::sub440270() {
_status2 = 0;
_flagE5 = false;
setFileHash(0x18AB4ED4, 0, -1);
SetUpdateHandler(&Klayman::update);
SetSpriteCallback(NULL);
SetMessageHandler(&KmScene2001::handleMessage4401A0);
}

} // End of namespace Neverhood
13 changes: 12 additions & 1 deletion engines/neverhood/klayman.h
Expand Up @@ -109,6 +109,7 @@ class Klayman : public AnimatedSprite {
void sub420E90();
void sub420EB0();
void sub420680();
void sub41F9E0();

void spriteUpdate41F250();
void spriteUpdate41F5F0();
Expand Down Expand Up @@ -204,7 +205,6 @@ class Klayman : public AnimatedSprite {
void sub41F950();
void sub41FB30();
uint32 handleMessage41EC70(int messageNum, const MessageParam &param, Entity *sender);
void sub41F9E0();
void spriteUpdate41F300();
uint32 handleMessage41EB70(int messageNum, const MessageParam &param, Entity *sender);
void sub41FA40();
Expand Down Expand Up @@ -359,6 +359,17 @@ class KmScene1705 : public Klayman {
void sub468B10();
};

class KmScene2001 : public Klayman {
public:
KmScene2001(NeverhoodEngine *vm, Entity *parentScene, int16 x, int16 y);
protected:
bool _flag;
uint32 xHandleMessage(int messageNum, const MessageParam &param);
uint32 handleMessage4401A0(int messageNum, const MessageParam &param, Entity *sender);
void sub440230();
void sub440270();
};

} // End of namespace Neverhood

#endif /* NEVERHOOD_KLAYMAN_H */
1 change: 1 addition & 0 deletions engines/neverhood/module.mk
Expand Up @@ -17,6 +17,7 @@ MODULE_OBJS = \
module1500.o \
module1700.o \
module1800.o \
module2000.o \
module2300.o \
module3000.o \
mouse.o \
Expand Down

0 comments on commit 5fcc3af

Please sign in to comment.