aboutsummaryrefslogtreecommitdiff
path: root/engines/neverhood/modules/module2100_sprites.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2013-10-06 18:07:44 +0300
committerFilippos Karapetis2013-10-06 18:08:19 +0300
commitd5ebc69de0af1992b821297d5e9cc9e8baa604de (patch)
treedc7f5c2200a9ed2a7c29109a2491331a55240a93 /engines/neverhood/modules/module2100_sprites.cpp
parentf19fd06e243fabf5a9244c178e056432c575860b (diff)
downloadscummvm-rg350-d5ebc69de0af1992b821297d5e9cc9e8baa604de.tar.gz
scummvm-rg350-d5ebc69de0af1992b821297d5e9cc9e8baa604de.tar.bz2
scummvm-rg350-d5ebc69de0af1992b821297d5e9cc9e8baa604de.zip
NEVERHOOD: Move more scene-specific Klaymen animations to their scenes
Diffstat (limited to 'engines/neverhood/modules/module2100_sprites.cpp')
-rw-r--r--engines/neverhood/modules/module2100_sprites.cpp35
1 files changed, 34 insertions, 1 deletions
diff --git a/engines/neverhood/modules/module2100_sprites.cpp b/engines/neverhood/modules/module2100_sprites.cpp
index 48d1ee1d6c..707ebe342f 100644
--- a/engines/neverhood/modules/module2100_sprites.cpp
+++ b/engines/neverhood/modules/module2100_sprites.cpp
@@ -165,7 +165,7 @@ uint32 KmScene2101::xHandleMessage(int messageNum, const MessageParam &param) {
GotoState(&Klaymen::stTryStandIdle);
break;
case 0x4811:
- GotoState(&Klaymen::stHitByDoor);
+ GotoState(&KmScene2101::stHitByDoor);
break;
case 0x4812:
if (param.asInteger() == 2)
@@ -224,4 +224,37 @@ uint32 KmScene2101::xHandleMessage(int messageNum, const MessageParam &param) {
return messageResult;
}
+uint32 KmScene2101::hmHitByDoor(int messageNum, const MessageParam &param, Entity *sender) {
+ uint32 messageResult = hmLowLevelAnimation(messageNum, param, sender);
+ int16 speedUpFrameIndex;
+ switch (messageNum) {
+ case 0x1008:
+ speedUpFrameIndex = getFrameIndex(kKlaymenSpeedUpHash);
+ if (_currFrameIndex < speedUpFrameIndex) {
+ startAnimation(0x35AA8059, speedUpFrameIndex, -1);
+ _y = 438;
+ }
+ messageResult = 0;
+ break;
+ case 0x100D:
+ if (param.asInteger() == 0x1A1A0785) {
+ playSound(0, 0x40F0A342);
+ } else if (param.asInteger() == 0x60428026) {
+ playSound(0, 0x40608A59);
+ }
+ break;
+ }
+ return messageResult;
+}
+
+void KmScene2101::stHitByDoor() {
+ _busyStatus = 1;
+ _acceptInput = false;
+ startAnimation(0x35AA8059, 0, -1);
+ SetUpdateHandler(&Klaymen::update);
+ SetMessageHandler(&KmScene2101::hmHitByDoor);
+ SetSpriteUpdate(&AnimatedSprite::updateDeltaXY);
+ playSound(0, 0x402E82D4);
+}
+
} // End of namespace Neverhood