[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