aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2007-04-17 03:48:51 +0000
committerPaul Gilbert2007-04-17 03:48:51 +0000
commitf9a32ff7d26eded08d7401408eea6cfad1d13055 (patch)
treea9045ba734136d8f785f52d528190b1f2b040afa /engines
parent23a86ea571a8cdbd11705f81203587a209ab41d7 (diff)
downloadscummvm-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')
-rw-r--r--engines/lure/hotspots.cpp22
-rw-r--r--engines/lure/hotspots.h2
2 files changed, 14 insertions, 10 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);
}
diff --git a/engines/lure/hotspots.h b/engines/lure/hotspots.h
index 99295be611..6fea355c6c 100644
--- a/engines/lure/hotspots.h
+++ b/engines/lure/hotspots.h
@@ -75,7 +75,7 @@ private:
static void catrionaAnimHandler(Hotspot &h);
static void morkusAnimHandler(Hotspot &h);
static void talkAnimHandler(Hotspot &h);
- static void headAnimHandler(Hotspot &h);
+ static void grubAnimHandler(Hotspot &h);
static void barmanAnimHandler(Hotspot &h);
static void skorlGaurdAnimHandler(Hotspot &h);
static void gargoyleAnimHandler(Hotspot &h);