aboutsummaryrefslogtreecommitdiff
path: root/engines/neverhood/modules/module2200_sprites.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2013-10-06 18:55:10 +0300
committerFilippos Karapetis2013-10-06 18:57:44 +0300
commit0fffbac36bee764b3479b5d3fb631faf5bcd5f76 (patch)
treec65bdc2c46039aaca067abf6ae3b5808803125db /engines/neverhood/modules/module2200_sprites.cpp
parent8c8b1b7da749d69078b1be88a00d5ba29e64413a (diff)
downloadscummvm-rg350-0fffbac36bee764b3479b5d3fb631faf5bcd5f76.tar.gz
scummvm-rg350-0fffbac36bee764b3479b5d3fb631faf5bcd5f76.tar.bz2
scummvm-rg350-0fffbac36bee764b3479b5d3fb631faf5bcd5f76.zip
NEVERHOOD: Move more scene-specific Klaymen animations to their scenes
Diffstat (limited to 'engines/neverhood/modules/module2200_sprites.cpp')
-rw-r--r--engines/neverhood/modules/module2200_sprites.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/engines/neverhood/modules/module2200_sprites.cpp b/engines/neverhood/modules/module2200_sprites.cpp
index 82fd5e32cc..30f0404cf1 100644
--- a/engines/neverhood/modules/module2200_sprites.cpp
+++ b/engines/neverhood/modules/module2200_sprites.cpp
@@ -970,7 +970,7 @@ uint32 KmScene2203::xHandleMessage(int messageNum, const MessageParam &param) {
startWalkToX(_dataResource.getPoint(param.asInteger()).x, false);
break;
case 0x4819:
- GotoState(&Klaymen::stClayDoorOpen);
+ GotoState(&KmScene2203::stClayDoorOpen);
break;
case 0x481A:
GotoState(&Klaymen::stInsertDisk);
@@ -1001,6 +1001,29 @@ uint32 KmScene2203::xHandleMessage(int messageNum, const MessageParam &param) {
return 0;
}
+void KmScene2203::stClayDoorOpen() {
+ if (!stStartAction(AnimationCallback(&KmScene2203::stClayDoorOpen))) {
+ _busyStatus = 2;
+ _acceptInput = false;
+ startAnimation(0x5CCCB330, 0, -1);
+ SetUpdateHandler(&Klaymen::update);
+ SetMessageHandler(&KmScene2203::hmClayDoorOpen);
+ SetSpriteUpdate(&Klaymen::suUpdateDestX);
+ }
+}
+
+uint32 KmScene2203::hmClayDoorOpen(int messageNum, const MessageParam &param, Entity *sender) {
+ uint32 messageResult = hmLowLevelAnimation(messageNum, param, sender);
+ switch (messageNum) {
+ case 0x100D:
+ if (param.asInteger() == 0x040D4186) {
+ sendMessage(_attachedSprite, 0x4808, 0);
+ }
+ break;
+ }
+ return messageResult;
+}
+
KmScene2205::KmScene2205(NeverhoodEngine *vm, Scene *parentScene, int16 x, int16 y)
: Klaymen(vm, parentScene, x, y) {