aboutsummaryrefslogtreecommitdiff
path: root/engines/neverhood/modules/module1100_sprites.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2013-10-06 04:55:52 +0300
committerFilippos Karapetis2013-10-06 04:56:41 +0300
commitf35298f9eed0c98a9ec839e80f95c9fcab075223 (patch)
tree3ec95ff547d1da89f4f236cfb0866689cfe69b68 /engines/neverhood/modules/module1100_sprites.cpp
parenta1719ac3d0c895ce428fe91ccc90792f3ac2d43a (diff)
downloadscummvm-rg350-f35298f9eed0c98a9ec839e80f95c9fcab075223.tar.gz
scummvm-rg350-f35298f9eed0c98a9ec839e80f95c9fcab075223.tar.bz2
scummvm-rg350-f35298f9eed0c98a9ec839e80f95c9fcab075223.zip
NEVERHOOD: Move module-specific Klaymen code to its respective module
Diffstat (limited to 'engines/neverhood/modules/module1100_sprites.cpp')
-rw-r--r--engines/neverhood/modules/module1100_sprites.cpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/engines/neverhood/modules/module1100_sprites.cpp b/engines/neverhood/modules/module1100_sprites.cpp
index d421d85f68..51e0bb3f49 100644
--- a/engines/neverhood/modules/module1100_sprites.cpp
+++ b/engines/neverhood/modules/module1100_sprites.cpp
@@ -197,4 +197,69 @@ uint32 SsScene1105OpenButton::handleMessage(int messageNum, const MessageParam &
return messageResult;
}
+KmScene1109::KmScene1109(NeverhoodEngine *vm, Scene *parentScene, int16 x, int16 y)
+ : Klaymen(vm, parentScene, x, y) {
+
+ // Empty
+}
+
+uint32 KmScene1109::xHandleMessage(int messageNum, const MessageParam &param) {
+ uint32 messageResult = 0;
+ switch (messageNum) {
+ case 0x2000:
+ _isSittingInTeleporter = param.asInteger() != 0;
+ messageResult = 1;
+ break;
+ case 0x4001:
+ case 0x4800:
+ startWalkToX(param.asPoint().x, false);
+ break;
+ case 0x4004:
+ if (_isSittingInTeleporter)
+ GotoState(&Klaymen::stSitIdleTeleporter);
+ else
+ GotoState(&Klaymen::stTryStandIdle);
+ break;
+ case 0x4804:
+ if (param.asInteger() != 0) {
+ _destX = param.asInteger();
+ GotoState(&Klaymen::stWalkingFirst);
+ } else
+ GotoState(&Klaymen::stPeekWall);
+ break;
+ case 0x4817:
+ setDoDeltaX(param.asInteger());
+ gotoNextStateExt();
+ break;
+ case 0x481D:
+ if (_isSittingInTeleporter)
+ GotoState(&Klaymen::stTurnToUseInTeleporter);
+ break;
+ case 0x481E:
+ if (_isSittingInTeleporter)
+ GotoState(&Klaymen::stReturnFromUseInTeleporter);
+ break;
+ case 0x4834:
+ GotoState(&Klaymen::stStepOver);
+ break;
+ case 0x4835:
+ sendMessage(_parentScene, 0x2000, 1);
+ _isSittingInTeleporter = true;
+ GotoState(&Klaymen::stSitInTeleporter);
+ break;
+ case 0x4836:
+ sendMessage(_parentScene, 0x2000, 0);
+ _isSittingInTeleporter = false;
+ GotoState(&Klaymen::stGetUpFromTeleporter);
+ break;
+ case 0x483D:
+ teleporterAppear(0x2C2A4A1C);
+ break;
+ case 0x483E:
+ teleporterDisappear(0x3C2E4245);
+ break;
+ }
+ return messageResult;
+}
+
} // End of namespace Neverhood