diff options
author | Vladimir Menshakov | 2009-09-07 20:38:02 +0000 |
---|---|---|
committer | Vladimir Menshakov | 2009-09-07 20:38:02 +0000 |
commit | 776d5183fd64a8bd831e552c4471d43103f36e99 (patch) | |
tree | ff3a3da19477de6cb0bfc92352964a3c5294b046 | |
parent | 3a1c347da6744ed97ba3240c10d07f5976371338 (diff) | |
download | scummvm-rg350-776d5183fd64a8bd831e552c4471d43103f36e99.tar.gz scummvm-rg350-776d5183fd64a8bd831e552c4471d43103f36e99.tar.bz2 scummvm-rg350-776d5183fd64a8bd831e552c4471d43103f36e99.zip |
play animation only when hovered
svn-id: r44005
-rw-r--r-- | engines/teenagent/animation.cpp | 4 | ||||
-rw-r--r-- | engines/teenagent/animation.h | 3 | ||||
-rw-r--r-- | engines/teenagent/inventory.cpp | 14 |
3 files changed, 18 insertions, 3 deletions
diff --git a/engines/teenagent/animation.cpp b/engines/teenagent/animation.cpp index 248e312231..b2c0d804b6 100644 --- a/engines/teenagent/animation.cpp +++ b/engines/teenagent/animation.cpp @@ -30,6 +30,10 @@ namespace TeenAgent { Animation::Animation() : id(0), x(0), y(0), loop(true), data(0), data_size(0), frames_count(0), frames(0), index(0) { } +Surface * Animation::firstFrame() const { + return frames != NULL? frames: NULL; +} + Surface * Animation::currentFrame(int dt) { if (frames == NULL || frames_count == 0) return NULL; diff --git a/engines/teenagent/animation.h b/engines/teenagent/animation.h index 784ce3b15a..4538bdbb7e 100644 --- a/engines/teenagent/animation.h +++ b/engines/teenagent/animation.h @@ -41,7 +41,10 @@ public: void load(Common::SeekableReadStream * s, Type type = TypeLan); void free(); + Surface * firstFrame() const; Surface * currentFrame(int dt = 1); + uint16 currentIndex() const { return index; } + ~Animation(); bool empty() const { return frames == NULL; } diff --git a/engines/teenagent/inventory.cpp b/engines/teenagent/inventory.cpp index bdf99bd971..ccb182e8b0 100644 --- a/engines/teenagent/inventory.cpp +++ b/engines/teenagent/inventory.cpp @@ -237,9 +237,17 @@ void Inventory::Item::render(Inventory * inventory, InventoryObject *obj, Graphi inventory->items->seek(inventory->offset[obj->id - 1]); animation.load(inventory->items, Animation::TypeInventory); } - Surface * s = animation.currentFrame(); - if (s != NULL) - s->render(dst, rect.left + 1, rect.top + 1); + if (hovered) { + Surface * s = animation.currentFrame(); + if (animation.currentIndex() == 0) + s = animation.currentFrame(); + if (s != NULL) + s->render(dst, rect.left + 1, rect.top + 1); + } else { + Surface * s = animation.firstFrame(); + if (s != NULL) + s->render(dst, rect.left + 1, rect.top + 1); + } } else { if (surface.empty()) { debug(0, "loading item %d from offset %x", obj->id, inventory->offset[obj->id - 1]); |