[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