diff options
author | Paul Gilbert | 2007-04-17 03:48:51 +0000 |
---|---|---|
committer | Paul Gilbert | 2007-04-17 03:48:51 +0000 |
commit | f9a32ff7d26eded08d7401408eea6cfad1d13055 (patch) | |
tree | a9045ba734136d8f785f52d528190b1f2b040afa /engines/lure/hotspots.cpp | |
parent | 23a86ea571a8cdbd11705f81203587a209ab41d7 (diff) | |
download | scummvm-rg350-f9a32ff7d26eded08d7401408eea6cfad1d13055.tar.gz scummvm-rg350-f9a32ff7d26eded08d7401408eea6cfad1d13055.tar.bz2 scummvm-rg350-f9a32ff7d26eded08d7401408eea6cfad1d13055.zip |
Bugfix for Grub's animation handler
svn-id: r26538
Diffstat (limited to 'engines/lure/hotspots.cpp')
-rw-r--r-- | engines/lure/hotspots.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/engines/lure/hotspots.cpp b/engines/lure/hotspots.cpp index 81d789a468..232112e95b 100644 --- a/engines/lure/hotspots.cpp +++ b/engines/lure/hotspots.cpp @@ -2098,7 +2098,7 @@ HandlerMethodPtr HotspotTickHandlers::getHandler(uint16 procOffset) { case 0x820E: return morkusAnimHandler; case 0x8241: - return headAnimHandler; + return grubAnimHandler; case 0x82A0: return barmanAnimHandler; case 0x85ce: @@ -3188,21 +3188,25 @@ void HotspotTickHandlers::talkAnimHandler(Hotspot &h) { } } -void HotspotTickHandlers::headAnimHandler(Hotspot &h) { +void HotspotTickHandlers::grubAnimHandler(Hotspot &h) { Resources &res = Resources::getReference(); + h.handleTalkDialog(); + Hotspot *character = res.getActiveHotspot(PLAYER_ID); uint16 frameNumber = 0; if (character->y() < 79) { - // TODO: - //character = res.getActiveHotspot(RATPOUCH_ID); - frameNumber = 1; - } else { - if (character->x() < 72) frameNumber = 0; - else if (character->x() < 172) frameNumber = 1; - else frameNumber = 2; + // If player is behind Grub, use Ratpouch if possible + Hotspot *ratpouch = res.getActiveHotspot(RATPOUCH_ID); + if ((ratpouch != NULL) && (ratpouch->roomNumber() == h.roomNumber())) + character = ratpouch; } + if (character->x() < 72) frameNumber = 0; + else if (character->x() < 172) frameNumber = 1; + else frameNumber = 2; + + h.setActionCtr(frameNumber); h.setFrameNumber(frameNumber); } |