aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStrangerke2012-12-26 08:27:32 +0100
committerStrangerke2012-12-26 08:27:32 +0100
commit145b593e22c04c9b29d306c39428346fb6205808 (patch)
treefafc21646f9d7374732d89f2274d8635aaebc28d
parentc7b49ac8838cfe7931752ceb635f39fbf29c43ff (diff)
downloadscummvm-rg350-145b593e22c04c9b29d306c39428346fb6205808.tar.gz
scummvm-rg350-145b593e22c04c9b29d306c39428346fb6205808.tar.bz2
scummvm-rg350-145b593e22c04c9b29d306c39428346fb6205808.zip
HOPKINS: Some refactoring in OCEAN()
-rw-r--r--engines/hopkins/computer.cpp14
-rw-r--r--engines/hopkins/graphics.cpp80
-rw-r--r--engines/hopkins/graphics.h9
-rw-r--r--engines/hopkins/hopkins.cpp161
-rw-r--r--engines/hopkins/hopkins.h2
5 files changed, 100 insertions, 166 deletions
diff --git a/engines/hopkins/computer.cpp b/engines/hopkins/computer.cpp
index cc0f407ff2..8809dc3145 100644
--- a/engines/hopkins/computer.cpp
+++ b/engines/hopkins/computer.cpp
@@ -804,7 +804,7 @@ void ComputerManager::playBreakout() {
_vm->_objectsManager.setSpriteX(1, _ballPosition.x);
_vm->_graphicsManager.RESET_SEGMENT_VESA();
_vm->_eventsManager.VBL();
- _vm->_graphicsManager.FADE_IN_CASSE();
+ _vm->_graphicsManager.fadeInBreakout();
// Wait for mouse press to start playing
do {
@@ -839,7 +839,7 @@ void ComputerManager::playBreakout() {
} while (!_vm->shouldQuit() && !v1);
if (v1 != 1)
break;
- _vm->_graphicsManager.FADE_OUT_CASSE();
+ _vm->_graphicsManager.fateOutBreakout();
--_breakoutLives;
if (_breakoutLives) {
@@ -868,7 +868,7 @@ void ComputerManager::playBreakout() {
}
if (v1 != 2)
return;
- _vm->_graphicsManager.FADE_OUT_CASSE();
+ _vm->_graphicsManager.fateOutBreakout();
newLevel();
}
}
@@ -907,7 +907,7 @@ int ComputerManager::displayHiscores() {
displayHiscoreLine(ptr, 9 * i + 199, yp, _score[scoreIndex]._score[i]);
}
- _vm->_graphicsManager.FADE_IN_CASSE();
+ _vm->_graphicsManager.fadeInBreakout();
_vm->_graphicsManager.RESET_SEGMENT_VESA();
buttonIndex = 0;
do {
@@ -924,7 +924,7 @@ int ComputerManager::displayHiscores() {
} while (!buttonIndex && !_vm->shouldQuit());
_vm->_eventsManager.mouseOff();
- _vm->_graphicsManager.FADE_OUT_CASSE();
+ _vm->_graphicsManager.fateOutBreakout();
_vm->_globals.freeMemory(ptr);
return buttonIndex;
}
@@ -943,7 +943,7 @@ void ComputerManager::getScoreName() {
_vm->_graphicsManager.SETCOLOR3(254, 0, 0, 0);
_vm->_fileManager.constructFilename(_vm->_globals.HOPSYSTEM, "ALPHA.SPR");
ptr = _vm->_fileManager.loadFile(_vm->_globals.NFICHIER);
- _vm->_graphicsManager.FADE_IN_CASSE();
+ _vm->_graphicsManager.fadeInBreakout();
for (int strPos = 0; strPos <= 4; strPos++) {
displayHiscoreLine(ptr, 9 * strPos + 140, 78, 1);
@@ -973,7 +973,7 @@ void ComputerManager::getScoreName() {
if (i <= -1)
break;
}
- _vm->_graphicsManager.FADE_OUT_CASSE();
+ _vm->_graphicsManager.fateOutBreakout();
_vm->_globals.freeMemory(ptr);
saveScore();
}
diff --git a/engines/hopkins/graphics.cpp b/engines/hopkins/graphics.cpp
index e83622ab57..fdbffe8456 100644
--- a/engines/hopkins/graphics.cpp
+++ b/engines/hopkins/graphics.cpp
@@ -176,7 +176,7 @@ void GraphicsManager::loadVgaImage(const Common::String &file) {
CopyAsm16(_vesaBuffer);
unlockScreen();
- FADE_IN_CASSE();
+ fadeInBreakout();
}
/**
@@ -734,17 +734,17 @@ void GraphicsManager::SETCOLOR4(int palIndex, int r, int g, int b) {
_palette[palOffset + 1] = gv;
_palette[palOffset + 2] = bv;
- WRITE_LE_UINT16(&SD_PIXELS[2 * palIndex], MapRGB(rv, gv, bv));
+ WRITE_LE_UINT16(&SD_PIXELS[2 * palIndex], mapRGB(rv, gv, bv));
}
void GraphicsManager::changePalette(const byte *palette) {
const byte *srcP = &palette[0];
for (int idx = 0; idx < PALETTE_SIZE; ++idx, srcP += 3) {
- *(uint16 *)&SD_PIXELS[2 * idx] = MapRGB(*srcP, *(srcP + 1), *(srcP + 2));
+ *(uint16 *)&SD_PIXELS[2 * idx] = mapRGB(*srcP, *(srcP + 1), *(srcP + 2));
}
}
-uint16 GraphicsManager::MapRGB(byte r, byte g, byte b) {
+uint16 GraphicsManager::mapRGB(byte r, byte g, byte b) {
Graphics::PixelFormat format = g_system->getScreenFormat();
return (r >> format.rLoss) << format.rShift
@@ -767,7 +767,7 @@ void GraphicsManager::FADE_INW_LINUX(const byte *surface) {
fadeIn(_palette, FADESPD, surface);
}
-void GraphicsManager::FADE_IN_CASSE() {
+void GraphicsManager::fadeInBreakout() {
setpal_vga256(_palette);
lockScreen();
CopyAsm16(_vesaBuffer);
@@ -775,7 +775,7 @@ void GraphicsManager::FADE_IN_CASSE() {
DD_VBL();
}
-void GraphicsManager::FADE_OUT_CASSE() {
+void GraphicsManager::fateOutBreakout() {
byte palette[PALETTE_EXT_BLOCK_SIZE];
memset(palette, 0, PALETTE_EXT_BLOCK_SIZE);
@@ -845,67 +845,6 @@ Video_Cont3_wVbe:
++srcP;
++destOffset;
}
- }}
-
-void GraphicsManager::Copy_Video_Vbe3(const byte *srcData) {
- int rleValue;
- int destOffset;
- const byte *srcP;
- uint8 srcByte;
- int destLen1;
- byte *destSlice1P;
- int destLen2;
- byte *destSlice2P;
-
- assert(_videoPtr);
- rleValue = 0;
- destOffset = 0;
- srcP = srcData;
- for (;;) {
- srcByte = *srcP;
- if (*srcP < 222)
- goto Video_Cont3_Vbe;
-
- if (srcByte == kByteStop)
- return;
- if (srcByte < kSetOffset) {
- destOffset += *srcP + 35;
- srcByte = *(srcP++ + 1);
- } else if (srcByte == k8bVal) {
- destOffset += *(srcP + 1);
- srcByte = *(srcP + 2);
- srcP += 2;
- } else if (srcByte == k16bVal) {
- destOffset += READ_LE_UINT16(srcP + 1);
- srcByte = *(srcP + 3);
- srcP += 3;
- } else {
- destOffset += READ_LE_UINT32(srcP + 1);
- srcByte = *(srcP + 5);
- srcP += 5;
- }
-Video_Cont3_Vbe:
- if (srcByte > 210) {
- if (srcByte == 211) {
- destLen1 = *(srcP + 1);
- rleValue = *(srcP + 2);
- destSlice1P = destOffset + (byte *)_videoPtr->pixels;
- destOffset += destLen1;
- memset(destSlice1P, rleValue, destLen1);
- srcP += 3;
- } else {
- destLen2 = (byte)(*srcP + 45);
- rleValue = *(srcP + 1);
- destSlice2P = (byte *)(destOffset + (byte *)_videoPtr->pixels);
- destOffset += destLen2;
- memset(destSlice2P, rleValue, destLen2);
- srcP += 2;
- }
- } else {
- *(destOffset + (byte *)_videoPtr->pixels) = srcByte;
- ++srcP;
- ++destOffset;
- }
}
}
@@ -2029,10 +1968,6 @@ void GraphicsManager::SHOW_PALETTE() {
setpal_vga256(_palette);
}
-void GraphicsManager::videkey() {
- // Empty in original
-}
-
void GraphicsManager::Copy_WinScan_Vbe(const byte *src, byte *dest) {
int result;
int destOffset;
@@ -2116,9 +2051,6 @@ void GraphicsManager::Reduc_Ecran(const byte *srcSurface, byte *destSurface, int
Red_x = 0;
Red_y = 0;
if (zoom < 100) {
- Reduc_Ecran_L = zoomOut(width, Red);
- Reduc_Ecran_H = zoomOut(height, Red);
-
for (int yCtr = 0; yCtr < height; ++yCtr, srcP += _lineNbr2) {
Red_y += Red;
if (Red_y < 100) {
diff --git a/engines/hopkins/graphics.h b/engines/hopkins/graphics.h
index a4e8312ca0..379d83018f 100644
--- a/engines/hopkins/graphics.h
+++ b/engines/hopkins/graphics.h
@@ -96,7 +96,6 @@ public:
int Compteur_y;
int spec_largeur;
bool NOFADE;
- int Reduc_Ecran_L, Reduc_Ecran_H;
public:
GraphicsManager();
~GraphicsManager();
@@ -128,17 +127,16 @@ public:
void FADE_OUTW();
void FADE_OUTW_LINUX(const byte *surface);
void FADE_INW_LINUX(const byte *surface);
- void FADE_IN_CASSE();
- void FADE_OUT_CASSE();
+ void fadeInBreakout();
+ void fateOutBreakout();
void setpal_vga256(const byte *palette);
void setpal_vga256_linux(const byte *palette, const byte *surface);
void SETCOLOR3(int palIndex, int r, int g, int b);
void SETCOLOR4(int palIndex, int r, int g, int b);
void changePalette(const byte *palette);
- uint16 MapRGB(byte r, byte g, byte b);
+ uint16 mapRGB(byte r, byte g, byte b);
void DD_VBL();
void Copy_WinScan_Vbe3(const byte *srcData, byte *destSurface);
- void Copy_Video_Vbe3(const byte *srcData);
void Copy_Video_Vbe16(const byte *srcData);
void Copy_Video_Vbe16a(const byte *srcData);
void Capture_Mem(const byte *srcSurface, byte *destSurface, int xs, int ys, int width, int height);
@@ -174,7 +172,6 @@ public:
void OPTI_INI(const Common::String &file, int mode);
void NB_SCREEN();
void SHOW_PALETTE();
- void videkey();
void Copy_WinScan_Vbe(const byte *srcP, byte *destP);
void Copy_Video_Vbe(const byte *src);
void Reduc_Ecran(const byte *srcSruface, byte *destSurface, int xp, int yp, int width, int height, int zoom);
diff --git a/engines/hopkins/hopkins.cpp b/engines/hopkins/hopkins.cpp
index 0e40572838..3652a36391 100644
--- a/engines/hopkins/hopkins.cpp
+++ b/engines/hopkins/hopkins.cpp
@@ -1453,55 +1453,55 @@ bool HopkinsEngine::runOS2Full() {
break;
case 77:
- OCEAN(77, "OCEAN01", "OCEAN01", 3, 0, 84, 0, 0, 25);
+ OCEAN(77, "OCEAN01", 3, 0, 84, 0, 0, 25);
break;
case 78:
- OCEAN(78, "OCEAN02", "OCEAN01", 1, 0, 91, 84, 0, 25);
+ OCEAN(78, "OCEAN02", 1, 0, 91, 84, 0, 25);
break;
case 79:
- OCEAN(79, "OCEAN03", "OCEAN01", 7, 87, 0, 0, 83, 25);
+ OCEAN(79, "OCEAN03", 7, 87, 0, 0, 83, 25);
break;
case 80:
- OCEAN(80, "OCEAN04", "OCEAN01", 1, 86, 88, 0, 81, 25);
+ OCEAN(80, "OCEAN04", 1, 86, 88, 0, 81, 25);
break;
case 81:
- OCEAN(81, "OCEAN05", "OCEAN01", 1, 91, 82, 80, 85, 25);
+ OCEAN(81, "OCEAN05", 1, 91, 82, 80, 85, 25);
break;
case 82:
- OCEAN(82, "OCEAN06", "OCEAN01", 7, 81, 0, 88, 0, 25);
+ OCEAN(82, "OCEAN06", 7, 81, 0, 88, 0, 25);
break;
case 83:
- OCEAN(83, "OCEAN07", "OCEAN01", 1, 89, 0, 79, 88, 25);
+ OCEAN(83, "OCEAN07", 1, 89, 0, 79, 88, 25);
break;
case 84:
- OCEAN(84, "OCEAN08", "OCEAN01", 1, 77, 0, 0, 78, 25);
+ OCEAN(84, "OCEAN08", 1, 77, 0, 0, 78, 25);
break;
case 85:
- OCEAN(85, "OCEAN09", "OCEAN01", 1, 0, 0, 81, 0, 25);
+ OCEAN(85, "OCEAN09", 1, 0, 0, 81, 0, 25);
break;
case 86:
- OCEAN(86, "OCEAN10", "OCEAN01", 1, 0, 80, 0, 91, 25);
+ OCEAN(86, "OCEAN10", 1, 0, 80, 0, 91, 25);
break;
case 87:
- OCEAN(87, "OCEAN11", "OCEAN01", 3, 0, 79, 90, 0, 25);
+ OCEAN(87, "OCEAN11", 3, 0, 79, 90, 0, 25);
break;
case 88:
- OCEAN(88, "OCEAN12", "OCEAN01", 1, 80, 0, 83, 82, 25);
+ OCEAN(88, "OCEAN12", 1, 80, 0, 83, 82, 25);
break;
case 89:
- OCEAN(89, "OCEAN13", "OCEAN01", 3, 0, 83, 0, 0, 25);
+ OCEAN(89, "OCEAN13", 3, 0, 83, 0, 0, 25);
break;
case 90:
@@ -1509,7 +1509,7 @@ bool HopkinsEngine::runOS2Full() {
break;
case 91:
- OCEAN(91, "OCEAN15", "OCEAN01", 3, 78, 81, 86, 0, 25);
+ OCEAN(91, "OCEAN15", 3, 78, 81, 86, 0, 25);
break;
case 93:
@@ -2341,55 +2341,55 @@ bool HopkinsEngine::runBeOSFull() {
break;
case 77:
- OCEAN(77, "OCEAN01", "OCEAN1", 3, 0, 84, 0, 0, 25);
+ OCEAN(77, "OCEAN01", 3, 0, 84, 0, 0, 25);
break;
case 78:
- OCEAN(78, "OCEAN02", "OCEAN1", 1, 0, 91, 84, 0, 25);
+ OCEAN(78, "OCEAN02", 1, 0, 91, 84, 0, 25);
break;
case 79:
- OCEAN(79, "OCEAN03", "OCEAN1", 7, 87, 0, 0, 83, 25);
+ OCEAN(79, "OCEAN03", 7, 87, 0, 0, 83, 25);
break;
case 80:
- OCEAN(80, "OCEAN04", "OCEAN1", 1, 86, 88, 0, 81, 25);
+ OCEAN(80, "OCEAN04", 1, 86, 88, 0, 81, 25);
break;
case 81:
- OCEAN(81, "OCEAN05", "OCEAN1", 1, 91, 82, 80, 85, 25);
+ OCEAN(81, "OCEAN05", 1, 91, 82, 80, 85, 25);
break;
case 82:
- OCEAN(82, "OCEAN06", "OCEAN1", 7, 81, 0, 88, 0, 25);
+ OCEAN(82, "OCEAN06", 7, 81, 0, 88, 0, 25);
break;
case 83:
- OCEAN(83, "OCEAN07", "OCEAN1", 1, 89, 0, 79, 88, 25);
+ OCEAN(83, "OCEAN07", 1, 89, 0, 79, 88, 25);
break;
case 84:
- OCEAN(84, "OCEAN08", "OCEAN1", 1, 77, 0, 0, 78, 25);
+ OCEAN(84, "OCEAN08", 1, 77, 0, 0, 78, 25);
break;
case 85:
- OCEAN(85, "OCEAN09", "OCEAN1", 1, 0, 0, 81, 0, 25);
+ OCEAN(85, "OCEAN09", 1, 0, 0, 81, 0, 25);
break;
case 86:
- OCEAN(86, "OCEAN10", "OCEAN1", 1, 0, 80, 0, 91, 25);
+ OCEAN(86, "OCEAN10", 1, 0, 80, 0, 91, 25);
break;
case 87:
- OCEAN(87, "OCEAN11", "OCEAN1", 3, 0, 79, 90, 0, 25);
+ OCEAN(87, "OCEAN11", 3, 0, 79, 90, 0, 25);
break;
case 88:
- OCEAN(88, "OCEAN12", "OCEAN1", 1, 80, 0, 83, 82, 25);
+ OCEAN(88, "OCEAN12", 1, 80, 0, 83, 82, 25);
break;
case 89:
- OCEAN(89, "OCEAN13", "OCEAN1", 3, 0, 83, 0, 0, 25);
+ OCEAN(89, "OCEAN13", 3, 0, 83, 0, 0, 25);
break;
case 90:
@@ -2397,7 +2397,7 @@ bool HopkinsEngine::runBeOSFull() {
break;
case 91:
- OCEAN(91, "OCEAN15", "OCEAN1", 3, 78, 81, 86, 0, 25);
+ OCEAN(91, "OCEAN15", 3, 78, 81, 86, 0, 25);
break;
case 93:
@@ -3226,55 +3226,55 @@ bool HopkinsEngine::runWin95full() {
break;
case 77:
- OCEAN(77, "OCEAN01", "OCEAN1", 3, 0, 84, 0, 0, 25);
+ OCEAN(77, "OCEAN01", 3, 0, 84, 0, 0, 25);
break;
case 78:
- OCEAN(78, "OCEAN02", "OCEAN1", 1, 0, 91, 84, 0, 25);
+ OCEAN(78, "OCEAN02", 1, 0, 91, 84, 0, 25);
break;
case 79:
- OCEAN(79, "OCEAN03", "OCEAN1", 7, 87, 0, 0, 83, 25);
+ OCEAN(79, "OCEAN03", 7, 87, 0, 0, 83, 25);
break;
case 80:
- OCEAN(80, "OCEAN04", "OCEAN1", 1, 86, 88, 0, 81, 25);
+ OCEAN(80, "OCEAN04", 1, 86, 88, 0, 81, 25);
break;
case 81:
- OCEAN(81, "OCEAN05", "OCEAN1", 1, 91, 82, 80, 85, 25);
+ OCEAN(81, "OCEAN05", 1, 91, 82, 80, 85, 25);
break;
case 82:
- OCEAN(82, "OCEAN06", "OCEAN1", 7, 81, 0, 88, 0, 25);
+ OCEAN(82, "OCEAN06", 7, 81, 0, 88, 0, 25);
break;
case 83:
- OCEAN(83, "OCEAN07", "OCEAN1", 1, 89, 0, 79, 88, 25);
+ OCEAN(83, "OCEAN07", 1, 89, 0, 79, 88, 25);
break;
case 84:
- OCEAN(84, "OCEAN08", "OCEAN1", 1, 77, 0, 0, 78, 25);
+ OCEAN(84, "OCEAN08", 1, 77, 0, 0, 78, 25);
break;
case 85:
- OCEAN(85, "OCEAN09", "OCEAN1", 1, 0, 0, 81, 0, 25);
+ OCEAN(85, "OCEAN09", 1, 0, 0, 81, 0, 25);
break;
case 86:
- OCEAN(86, "OCEAN10", "OCEAN1", 1, 0, 80, 0, 91, 25);
+ OCEAN(86, "OCEAN10", 1, 0, 80, 0, 91, 25);
break;
case 87:
- OCEAN(87, "OCEAN11", "OCEAN1", 3, 0, 79, 90, 0, 25);
+ OCEAN(87, "OCEAN11", 3, 0, 79, 90, 0, 25);
break;
case 88:
- OCEAN(88, "OCEAN12", "OCEAN1", 1, 80, 0, 83, 82, 25);
+ OCEAN(88, "OCEAN12", 1, 80, 0, 83, 82, 25);
break;
case 89:
- OCEAN(89, "OCEAN13", "OCEAN1", 3, 0, 83, 0, 0, 25);
+ OCEAN(89, "OCEAN13", 3, 0, 83, 0, 0, 25);
break;
case 90:
@@ -3282,7 +3282,7 @@ bool HopkinsEngine::runWin95full() {
break;
case 91:
- OCEAN(91, "OCEAN15", "OCEAN1", 3, 78, 81, 86, 0, 25);
+ OCEAN(91, "OCEAN15", 3, 78, 81, 86, 0, 25);
break;
case 93:
@@ -4104,65 +4104,65 @@ bool HopkinsEngine::runLinuxFull() {
break;
case 77:
- OCEAN(77, "OCEAN01", "OCEAN1", 3, 0, 84, 0, 0, 25);
+ OCEAN(77, "OCEAN01", 3, 0, 84, 0, 0, 25);
break;
case 78:
- OCEAN(78, "OCEAN02", "OCEAN1", 1, 0, 91, 84, 0, 25);
+ OCEAN(78, "OCEAN02", 1, 0, 91, 84, 0, 25);
break;
case 79:
- OCEAN(79, "OCEAN03", "OCEAN1", 7, 87, 0, 0, 83, 25);
+ OCEAN(79, "OCEAN03", 7, 87, 0, 0, 83, 25);
break;
case 80:
- OCEAN(80, "OCEAN04", "OCEAN1", 1, 86, 88, 0, 81, 25);
+ OCEAN(80, "OCEAN04", 1, 86, 88, 0, 81, 25);
break;
case 81:
- OCEAN(81, "OCEAN05", "OCEAN1", 1, 91, 82, 80, 85, 25);
+ OCEAN(81, "OCEAN05", 1, 91, 82, 80, 85, 25);
break;
case 82:
- OCEAN(82, "OCEAN06", "OCEAN1", 7, 81, 0, 88, 0, 25);
+ OCEAN(82, "OCEAN06", 7, 81, 0, 88, 0, 25);
break;
case 83:
- OCEAN(83, "OCEAN07", "OCEAN1", 1, 89, 0, 79, 88, 25);
+ OCEAN(83, "OCEAN07", 1, 89, 0, 79, 88, 25);
break;
case 84:
- OCEAN(84, "OCEAN08", "OCEAN1", 1, 77, 0, 0, 78, 25);
+ OCEAN(84, "OCEAN08", 1, 77, 0, 0, 78, 25);
break;
case 85:
- OCEAN(85, "OCEAN09", "OCEAN1", 1, 0, 0, 81, 0, 25);
+ OCEAN(85, "OCEAN09", 1, 0, 0, 81, 0, 25);
break;
case 86:
- OCEAN(86, "OCEAN10", "OCEAN1", 1, 0, 80, 0, 91, 25);
+ OCEAN(86, "OCEAN10", 1, 0, 80, 0, 91, 25);
break;
case 87:
- OCEAN(87, "OCEAN11", "OCEAN1", 3, 0, 79, 90, 0, 25);
+ OCEAN(87, "OCEAN11", 3, 0, 79, 90, 0, 25);
break;
case 88:
- OCEAN(88, "OCEAN12", "OCEAN1", 1, 80, 0, 83, 82, 25);
+ OCEAN(88, "OCEAN12", 1, 80, 0, 83, 82, 25);
break;
case 89:
- OCEAN(89, "OCEAN13", "OCEAN1", 3, 0, 83, 0, 0, 25);
- break;
-
- case 91:
- OCEAN(91, "OCEAN15", "OCEAN1", 3, 78, 81, 86, 0, 25);
+ OCEAN(89, "OCEAN13", 3, 0, 83, 0, 0, 25);
break;
case 90:
BASED();
break;
+ case 91:
+ OCEAN(91, "OCEAN15", 3, 78, 81, 86, 0, 25);
+ break;
+
case 93:
_globals.Max_Propre = 5;
_globals.Max_Ligne_Long = 5;
@@ -5646,7 +5646,7 @@ void HopkinsEngine::OCEAN_HOME() {
_objectsManager.setSpriteIndex(0, 9);
}
-void HopkinsEngine::OCEAN(int16 a1, Common::String a2, Common::String a3, int16 a4, int16 exit1, int16 exit2, int16 exit3, int16 exit4, int16 soundId) {
+void HopkinsEngine::OCEAN(int16 curExitId, Common::String backgroundFilename, int16 defaultDirection, int16 exit1, int16 exit2, int16 exit3, int16 exit4, int16 soundId) {
_globals.PLAN_FLAG = false;
_graphicsManager.NOFADE = false;
_globals.NOMARCHE = false;
@@ -5657,16 +5657,16 @@ void HopkinsEngine::OCEAN(int16 a1, Common::String a2, Common::String a3, int16
_soundManager.WSOUND(soundId);
_fileManager.constructFilename(_globals.HOPSYSTEM, "VAISSEAU.SPR");
_globals.PERSO = _fileManager.loadFile(_globals.NFICHIER);
- if (a2.size())
- _graphicsManager.loadImage(a2);
+ if (backgroundFilename.size())
+ _graphicsManager.loadImage(backgroundFilename);
- if ((a1 != 77) && (a1 != 84) && (a1 != 91))
+ if ((curExitId != 77) && (curExitId != 84) && (curExitId != 91))
_objectsManager.INILINK("ocean");
- else if (a1 == 77)
+ else if (curExitId == 77)
_objectsManager.INILINK("IM77");
- else if (a1 == 84)
+ else if (curExitId == 84)
_objectsManager.INILINK("IM84");
- else if (a1 == 91)
+ else if (curExitId == 91)
_objectsManager.INILINK("IM91");
if (!exit1)
@@ -5677,24 +5677,29 @@ void HopkinsEngine::OCEAN(int16 a1, Common::String a2, Common::String a3, int16
_objectsManager.disableZone(3);
if (!exit4)
_objectsManager.disableZone(4);
+
if (!_globals.OCEAN_SENS)
- _globals.OCEAN_SENS = a4;
- if (_globals.OCEAN_SENS == 5) {
- _objectsManager._characterPos.x = 236;
- _objectsManager.PERI = 9;
- }
- if (_globals.OCEAN_SENS == 1) {
+ _globals.OCEAN_SENS = defaultDirection;
+
+ switch (_globals.OCEAN_SENS) {
+ case 1:
_objectsManager._characterPos.x = 236;
_objectsManager.PERI = 27;
- }
- if (_globals.OCEAN_SENS == 7) {
- _objectsManager._characterPos.x = 415;
- _objectsManager.PERI = 18;
- }
- if (_globals.OCEAN_SENS == 3) {
+ break;
+ case 3:
_objectsManager._characterPos.x = -20;
_objectsManager.PERI = 0;
+ break;
+ case 5:
+ _objectsManager._characterPos.x = 236;
+ _objectsManager.PERI = 9;
+ break;
+ case 7:
+ _objectsManager._characterPos.x = 415;
+ _objectsManager.PERI = 18;
+ break;
}
+
_objectsManager.SPRITE(_globals.PERSO, Common::Point(_objectsManager._characterPos.x, 110), 0, _objectsManager.PERI, 0, 0, 0, 0);
_graphicsManager.SETCOLOR3(252, 100, 100, 100);
_graphicsManager.SETCOLOR3(253, 100, 100, 100);
diff --git a/engines/hopkins/hopkins.h b/engines/hopkins/hopkins.h
index 0c3011d952..8d25f37240 100644
--- a/engines/hopkins/hopkins.h
+++ b/engines/hopkins/hopkins.h
@@ -105,7 +105,7 @@ private:
void BTOCEAN();
void OCEAN_HOME();
- void OCEAN(int16 a1, Common::String a2, Common::String a3, int16 a4, int16 exit1, int16 exit2, int16 exit3, int16 exit4, int16 soundId);
+ void OCEAN(int16 curExitId, Common::String backgroundFilename, int16 defaultDirection, int16 exit1, int16 exit2, int16 exit3, int16 exit4, int16 soundId);
void loadCredits();
void displayCredits(int startPosY, byte *buffer, char colour);
void displayCredits();