[Scummvm-cvs-logs] scummvm master -> 0fd9abfe01d517c12b6855b6777a7e062ec1cc78

DrMcCoy drmccoy at drmccoy.de
Fri Jan 27 15:08:08 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:
0fd9abfe01 GOB: Play the correct animation when Oko's picking up pearls


Commit: 0fd9abfe01d517c12b6855b6777a7e062ec1cc78
    https://github.com/scummvm/scummvm/commit/0fd9abfe01d517c12b6855b6777a7e062ec1cc78
Author: Sven Hesse (drmccoy at users.sourceforge.net)
Date: 2012-01-27T06:07:26-08:00

Commit Message:
GOB: Play the correct animation when Oko's picking up pearls

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 d59d343..4b08a21 100644
--- a/engines/gob/minigames/geisha/diving.cpp
+++ b/engines/gob/minigames/geisha/diving.cpp
@@ -121,10 +121,10 @@ bool Diving::play(uint16 playerCount, bool hasPearlLocation) {
 			shoot(mouseX, mouseY);
 
 		if (key == kKeyDown) {
-			if (_oko->isAtBottom())
+			_oko->sink();
+			if ((_oko->getState() == Oko::kStatePick) && (_oko->getFrame() == 0))
 				getPearl();
 
-			_oko->sink();
 		} else if (key == kKeyUp)
 			_oko->raise();
 
diff --git a/engines/gob/minigames/geisha/oko.cpp b/engines/gob/minigames/geisha/oko.cpp
index e4cf32f..5da1947 100644
--- a/engines/gob/minigames/geisha/oko.cpp
+++ b/engines/gob/minigames/geisha/oko.cpp
@@ -33,7 +33,8 @@ enum kOkoAnimation {
 	kOkoAnimationSwim    = 1,
 	kOkoAnimationSink    = 8,
 	kOkoAnimationRaise   = 7,
-	kOkoAnimationBreathe = 2
+	kOkoAnimationBreathe = 2,
+	kOkoAnimationPick    = 3
 };
 
 static const int16 kOkoPositionX = 110;
@@ -78,6 +79,15 @@ void Oko::advance() {
 			}
 			break;
 
+		case kStatePick:
+			if (wasLastFrame) {
+				_level = 1;
+				setAnimation(kOkoAnimationSwim);
+				setPosition(kOkoPositionX, kLevelPositionX[_level]);
+				_state = kStateSwim;
+			}
+			break;
+
 		default:
 			break;
 	}
@@ -87,8 +97,11 @@ void Oko::sink() {
 	if (_state != kStateSwim)
 		return;
 
-	if (_level >= (kLevelCount - 1))
+	if (_level >= (kLevelCount - 1)) {
+		setAnimation(kOkoAnimationPick);
+		_state = kStatePick;
 		return;
+	}
 
 	setAnimation(kOkoAnimationSink);
 	setPosition(kOkoPositionX, kLevelPositionX[_level]);
diff --git a/engines/gob/minigames/geisha/oko.h b/engines/gob/minigames/geisha/oko.h
index 892f0b8..0dee53c 100644
--- a/engines/gob/minigames/geisha/oko.h
+++ b/engines/gob/minigames/geisha/oko.h
@@ -40,7 +40,8 @@ public:
 		kStateSwim,
 		kStateSink,
 		kStateRaise,
-		kStateBreathe
+		kStateBreathe,
+		kStatePick
 	};
 
 	Oko(const ANIFile &ani, Sound &sound, SoundDesc &breathe);






More information about the Scummvm-git-logs mailing list