From 145b593e22c04c9b29d306c39428346fb6205808 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 26 Dec 2012 08:27:32 +0100 Subject: HOPKINS: Some refactoring in OCEAN() --- engines/hopkins/computer.cpp | 14 ++-- engines/hopkins/graphics.cpp | 80 ++------------------- engines/hopkins/graphics.h | 9 +-- engines/hopkins/hopkins.cpp | 161 ++++++++++++++++++++++--------------------- engines/hopkins/hopkins.h | 2 +- 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(); -- cgit v1.2.3