diff options
Diffstat (limited to 'engines/gob/minigames/geisha/oko.cpp')
-rw-r--r-- | engines/gob/minigames/geisha/oko.cpp | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/engines/gob/minigames/geisha/oko.cpp b/engines/gob/minigames/geisha/oko.cpp index 23f460fdba..c9d4d1f43f 100644 --- a/engines/gob/minigames/geisha/oko.cpp +++ b/engines/gob/minigames/geisha/oko.cpp @@ -29,12 +29,15 @@ namespace Gob { namespace Geisha { enum kOkoAnimation { - kOkoAnimationEnter = 0, - kOkoAnimationSwim = 1, - kOkoAnimationSink = 8, - kOkoAnimationRaise = 7, - kOkoAnimationBreathe = 2, - kOkoAnimationPick = 3 + kOkoAnimationEnter = 0, + kOkoAnimationSwim = 1, + kOkoAnimationSink = 8, + kOkoAnimationRaise = 7, + kOkoAnimationBreathe = 2, + kOkoAnimationPick = 3, + kOkoAnimationDie0 = 17, + kOkoAnimationDie1 = 18, + kOkoAnimationDie2 = 19 }; static const int16 kOkoPositionX = 110; @@ -56,6 +59,11 @@ Oko::~Oko() { void Oko::advance() { bool wasLastFrame = lastFrame(); + if ((_state == kStateDead) && wasLastFrame) { + setPause(true); + return; + } + ANIObject::advance(); switch (_state) { @@ -127,6 +135,14 @@ void Oko::raise() { _level--; } +void Oko::die() { + if (_state != kStateSwim) + return; + + setAnimation(kOkoAnimationDie0 + _level); + _state = kStateDead; +} + Oko::State Oko::getState() const { return _state; } |