From d5ebc69de0af1992b821297d5e9cc9e8baa604de Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Sun, 6 Oct 2013 18:07:44 +0300 Subject: NEVERHOOD: Move more scene-specific Klaymen animations to their scenes --- engines/neverhood/modules/module2100_sprites.cpp | 35 +++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'engines/neverhood/modules/module2100_sprites.cpp') 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 ¶m) { 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 ¶m) { return messageResult; } +uint32 KmScene2101::hmHitByDoor(int messageNum, const MessageParam ¶m, 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 -- cgit v1.2.3