aboutsummaryrefslogtreecommitdiff
path: root/engines/hopkins
diff options
context:
space:
mode:
authorStrangerke2012-11-11 23:03:14 +0100
committerStrangerke2012-11-11 23:03:14 +0100
commit8521e614a9dd6d7817d7582645785bbf818ddbfd (patch)
treee108b5a76242d6a75d6d59884c8ebf23b66c10cb /engines/hopkins
parenta1d0d2f7db6c67e4c1dd72200d81b79aa4735f96 (diff)
downloadscummvm-rg350-8521e614a9dd6d7817d7582645785bbf818ddbfd.tar.gz
scummvm-rg350-8521e614a9dd6d7817d7582645785bbf818ddbfd.tar.bz2
scummvm-rg350-8521e614a9dd6d7817d7582645785bbf818ddbfd.zip
HOPKINS: Implement BTOCEAN()
Diffstat (limited to 'engines/hopkins')
-rw-r--r--engines/hopkins/hopkins.cpp188
1 files changed, 187 insertions, 1 deletions
diff --git a/engines/hopkins/hopkins.cpp b/engines/hopkins/hopkins.cpp
index ddad2d5bd3..e95ecba330 100644
--- a/engines/hopkins/hopkins.cpp
+++ b/engines/hopkins/hopkins.cpp
@@ -2438,7 +2438,193 @@ void HopkinsEngine::Credits() {
}
void HopkinsEngine::BTOCEAN() {
- warning("STUB - BTOCEAN()");
+ warning("BTOCEAN()");
+
+ _fontManager.TEXTE_OFF(9);
+ if (_eventsManager.btsouris == 16) {
+ _eventsManager.XMOUSE();
+ if (_objectsManager.NUMZONE > 0) {
+ int oldPosX = _eventsManager.XMOUSE();
+ int oldPosY = _eventsManager.YMOUSE();
+ bool displAnim = false;
+ if (_objectsManager.NUMZONE == 1) {
+ if (_globals.OCEAN_SENS == 3)
+ _objectsManager.SPACTION(_globals.PERSO, "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,-1,", 0, 0, 6, 0);
+ if (_globals.OCEAN_SENS == 1)
+ _objectsManager.SPACTION(_globals.PERSO, "27,26,25,24,23,22,21,20,19,18,-1,", 0, 0, 6, 0);
+ if (_globals.OCEAN_SENS == 5)
+ _objectsManager.SPACTION(_globals.PERSO, "9,10,11,12,13,14,15,16,17,18,-1,", 0, 0, 6, 0);
+ _globals.OCEAN_SENS = 7;
+ _globals.SORTIE = 1;
+ int oldX = _objectsManager.XSPR(0);
+ while (1) {
+ if (_globals.vitesse == 1)
+ oldX -= 2;
+ if (_globals.vitesse == 2)
+ oldX -= 4;
+ if (_globals.vitesse == 3)
+ oldX -= 6;
+ _objectsManager.SETXSPR(0, oldX);
+ OCEAN_HOME();
+ _eventsManager.VBL();
+ if (_eventsManager.BMOUSE() == 1) {
+ if (oldPosX == _eventsManager.XMOUSE()) {
+ if (_eventsManager.YMOUSE() == oldPosY)
+ break;
+ }
+ }
+ if (oldX <= -100)
+ goto LABEL_22;
+ }
+ displAnim = true;
+ }
+LABEL_22:
+ if (_objectsManager.NUMZONE == 2) {
+ if (_globals.OCEAN_SENS == 7)
+ _objectsManager.SPACTION(_globals.PERSO, "18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,-1,", 0, 0, 6, 0);
+ if (_globals.OCEAN_SENS == 1)
+ _objectsManager.SPACTION(_globals.PERSO, "27,28,29,30,31,32,33,34,35,36,-1,", 0, 0, 6, 0);
+ if (_globals.OCEAN_SENS == 5)
+ _objectsManager.SPACTION(_globals.PERSO, "9,8,7,6,5,4,3,2,1,0,-1,", 0, 0, 6, 0);
+ _globals.OCEAN_SENS = 3;
+ _globals.SORTIE = 2;
+ int oldX = _objectsManager.XSPR(0);
+ while (1) {
+ if (_globals.vitesse == 1)
+ oldX += 2;
+ if (_globals.vitesse == 2)
+ oldX += 4;
+ if (_globals.vitesse == 3)
+ oldX += 6;
+ _objectsManager.SETXSPR(0, oldX);
+ OCEAN_HOME();
+ _eventsManager.VBL();
+ if (_eventsManager.BMOUSE() == 1) {
+ if (oldPosX == _eventsManager.XMOUSE()) {
+ if (_eventsManager.YMOUSE() == oldPosY)
+ break;
+ }
+ }
+ if (oldX > 499)
+ goto LABEL_41;
+ }
+ displAnim = true;
+ }
+LABEL_41:
+ if (_objectsManager.NUMZONE == 3) {
+ if (_globals.OCEAN_SENS == 3) {
+ int oldX = _objectsManager.XSPR(0);
+ do {
+ if (_globals.vitesse == 1)
+ oldX += 2;
+ if (_globals.vitesse == 2)
+ oldX += 4;
+ if (_globals.vitesse == 3)
+ oldX += 6;
+ _objectsManager.SETXSPR(0, oldX);
+ OCEAN_HOME();
+ _eventsManager.VBL();
+ if (_eventsManager.BMOUSE() == 1) {
+ if (oldPosX == _eventsManager.XMOUSE()) {
+ if (_eventsManager.YMOUSE() == oldPosY) {
+ displAnim = true;
+ goto LABEL_57;
+ }
+ }
+ }
+ } while (oldX <= 235);
+ if (!displAnim)
+ _objectsManager.SPACTION(_globals.PERSO, "36,35,34,33,32,31,30,29,28,27,-1,", 0, 0, 6, 0);
+ }
+LABEL_57:
+ if (_globals.OCEAN_SENS == 7) {
+ int oldX = _objectsManager.XSPR(0);
+ do {
+ if (_globals.vitesse == 1)
+ oldX -= 2;
+ if (_globals.vitesse == 2)
+ oldX -= 4;
+ if (_globals.vitesse == 3)
+ oldX -= 6;
+ _objectsManager.SETXSPR(0, oldX);
+ OCEAN_HOME();
+ _eventsManager.VBL();
+ if (_eventsManager.BMOUSE() == 1) {
+ if (oldPosX == _eventsManager.XMOUSE()) {
+ if (_eventsManager.YMOUSE() == oldPosY) {
+ displAnim = true;
+ goto LABEL_72;
+ }
+ }
+ }
+ } while (oldX > 236);
+ if (!displAnim)
+ _objectsManager.SPACTION(_globals.PERSO, "18,19,20,21,22,23,24,25,26,27,-1,", 0, 0, 6, 0);
+ }
+LABEL_72:
+ if (_globals.OCEAN_SENS == 5)
+ _objectsManager.SPACTION(_globals.PERSO, "9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,", 0, 0, 6, 0);
+ _globals.OCEAN_SENS = 1;
+ _globals.SORTIE = 3;
+ }
+ if (_objectsManager.NUMZONE == 4) {
+ if (_globals.OCEAN_SENS == 3) {
+ int oldX = _objectsManager.XSPR(0);
+ do {
+ if (_globals.vitesse == 1)
+ oldX += 2;
+ if (_globals.vitesse == 2)
+ oldX += 4;
+ if (_globals.vitesse == 3)
+ oldX += 6;
+ _objectsManager.SETXSPR(0, oldX);
+ OCEAN_HOME();
+ _eventsManager.VBL();
+ if (_eventsManager.BMOUSE() == 1) {
+ if (oldPosX == _eventsManager.XMOUSE()) {
+ if (_eventsManager.YMOUSE() == oldPosY) {
+ displAnim = true;
+ goto LABEL_91;
+ }
+ }
+ }
+ } while (oldX <= 235);
+ if (!displAnim)
+ _objectsManager.SPACTION(_globals.PERSO, "0,1,2,3,4,5,6,7,8,9,-1,", 0, 0, 6, 0);
+ }
+LABEL_91:
+ if (_globals.OCEAN_SENS == 7) {
+ int oldX = _objectsManager.XSPR(0);
+ while (1) {
+ if (_globals.vitesse == 1)
+ oldX -= 2;
+ if (_globals.vitesse == 2)
+ oldX -= 4;
+ if (_globals.vitesse == 3)
+ oldX -= 6;
+ _objectsManager.SETXSPR(0, oldX);
+ OCEAN_HOME();
+ _eventsManager.VBL();
+ if (_eventsManager.BMOUSE() == 1) {
+ if (oldPosX == _eventsManager.XMOUSE()) {
+ if (_eventsManager.YMOUSE() == oldPosY)
+ break;
+ }
+ }
+ if (oldX <= 236) {
+ if (!displAnim)
+ _objectsManager.SPACTION(_globals.PERSO, "18,17,16,15,14,13,12,11,10,9,-1,", 0, 0, 6, 0);
+ break;
+ }
+ }
+ }
+ if (_globals.OCEAN_SENS == 1)
+ _objectsManager.SPACTION(_globals.PERSO, "27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,-1,", 0, 0, 6, 0);
+ _globals.OCEAN_SENS = 5;
+ _globals.SORTIE = 4;
+ }
+ }
+ }
}
void HopkinsEngine::OCEAN_HOME() {