diff options
Diffstat (limited to 'engines/neverhood/modules/module2800_sprites.cpp')
-rw-r--r-- | engines/neverhood/modules/module2800_sprites.cpp | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/engines/neverhood/modules/module2800_sprites.cpp b/engines/neverhood/modules/module2800_sprites.cpp index c167f414a6..a600c55dd3 100644 --- a/engines/neverhood/modules/module2800_sprites.cpp +++ b/engines/neverhood/modules/module2800_sprites.cpp @@ -1189,12 +1189,35 @@ uint32 KmScene2803Small::xHandleMessage(int messageNum, const MessageParam ¶ GotoState(&Klaymen::stTurnToBackSmall); break; case 0x4830: - GotoState(&Klaymen::stShrink); + GotoState(&KmScene2803Small::stShrink); break; } return 0; } +uint32 KmScene2803Small::hmShrink(int messageNum, const MessageParam ¶m, Entity *sender) { + uint32 messageResult = hmLowLevelAnimation(messageNum, param, sender); + switch (messageNum) { + case 0x100D: + if (param.asInteger() == 0x80C110B5) + sendMessage(_parentScene, 0x482A, 0); + else if (param.asInteger() == 0x33288344) + playSound(2, 0x10688664); + break; + } + return messageResult; +} + +void KmScene2803Small::stShrink() { + _busyStatus = 0; + _acceptInput = false; + playSound(0, 0x4C69EA53); + startAnimation(0x1AE88904, 0, -1); + SetUpdateHandler(&Klaymen::update); + SetMessageHandler(&KmScene2803Small::hmShrink); + SetSpriteUpdate(&AnimatedSprite::updateDeltaXY); +} + KmScene2805::KmScene2805(NeverhoodEngine *vm, Scene *parentScene, int16 x, int16 y) : Klaymen(vm, parentScene, x, y) { |