[Scummvm-cvs-logs] scummvm master -> 60306c40ac8ec733fb7ec45ea61f91de245ab02e
DrMcCoy
drmccoy at drmccoy.de
Sat Jan 28 18:03:49 CET 2012
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
60306c40ac GOB: If there's no air left, Oko dies
Commit: 60306c40ac8ec733fb7ec45ea61f91de245ab02e
https://github.com/scummvm/scummvm/commit/60306c40ac8ec733fb7ec45ea61f91de245ab02e
Author: Sven Hesse (drmccoy at users.sourceforge.net)
Date: 2012-01-28T09:03:00-08:00
Commit Message:
GOB: If there's no air left, Oko dies
Changed paths:
engines/gob/minigames/geisha/diving.cpp
engines/gob/minigames/geisha/oko.cpp
engines/gob/minigames/geisha/oko.h
diff --git a/engines/gob/minigames/geisha/diving.cpp b/engines/gob/minigames/geisha/diving.cpp
index bd87be8..0a43f96 100644
--- a/engines/gob/minigames/geisha/diving.cpp
+++ b/engines/gob/minigames/geisha/diving.cpp
@@ -410,6 +410,9 @@ void Diving::updateAirMeter() {
if (_airCycle == 0)
_airMeter->decrease();
+
+ if (_airMeter->getValue() == 0)
+ _oko->die();
}
void Diving::updateEvilFish() {
diff --git a/engines/gob/minigames/geisha/oko.cpp b/engines/gob/minigames/geisha/oko.cpp
index 23f460f..c9d4d1f 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;
}
diff --git a/engines/gob/minigames/geisha/oko.h b/engines/gob/minigames/geisha/oko.h
index 3782493..d5d18c1 100644
--- a/engines/gob/minigames/geisha/oko.h
+++ b/engines/gob/minigames/geisha/oko.h
@@ -41,7 +41,8 @@ public:
kStateSink,
kStateRaise,
kStateBreathe,
- kStatePick
+ kStatePick,
+ kStateDead
};
Oko(const ANIFile &ani, Sound &sound, SoundDesc &breathe);
@@ -55,6 +56,9 @@ public:
/** Oko should raise a level. */
void raise();
+ /** Oko should die. */
+ void die();
+
State getState() const;
bool isBreathing() const;
More information about the Scummvm-git-logs
mailing list