aboutsummaryrefslogtreecommitdiff
path: root/engines/hopkins/hopkins.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/hopkins/hopkins.cpp')
-rw-r--r--engines/hopkins/hopkins.cpp194
1 files changed, 109 insertions, 85 deletions
diff --git a/engines/hopkins/hopkins.cpp b/engines/hopkins/hopkins.cpp
index bf9509c0d4..0d40f69e8f 100644
--- a/engines/hopkins/hopkins.cpp
+++ b/engines/hopkins/hopkins.cpp
@@ -39,6 +39,7 @@ HopkinsEngine *g_vm;
HopkinsEngine::HopkinsEngine(OSystem *syst, const HopkinsGameDescription *gameDesc) : Engine(syst),
_gameDescription(gameDesc), _randomSource("Hopkins") {
+ DebugMan.addDebugChannel(kDebugPath, "Path", "Pathfinding debug level");
g_vm = this;
_animMan = new AnimationManager(this);
_computer = new ComputerManager(this);
@@ -172,7 +173,7 @@ bool HopkinsEngine::runWin95Demo() {
_globals->_characterSpriteBuf = _fileIO->loadFile("PERSO.SPR");
}
- _globals->_characterType = 0;
+ _globals->_characterType = CHARACTER_HOPKINS;
_objectsMan->_mapCarPosX = _objectsMan->_mapCarPosY = 0;
memset(_globals->_saveData, 0, 2000);
_globals->_exitId = 0;
@@ -230,9 +231,9 @@ bool HopkinsEngine::runWin95Demo() {
_graphicsMan->clearScreen();
_graphicsMan->clearPalette();
if (!_globals->_censorshipFl)
- _animMan->playAnim("BANQUE.ANM", 200, 28, 200);
+ _animMan->playAnim("BANQUE.ANM", "BANKUK.ANM", 200, 28, 200);
else
- _animMan->playAnim("BANKUK.ANM", 200, 28, 200);
+ _animMan->playAnim("BANQUE.ANM", "BANKUK.ANM", 200, 28, 200);
_soundMan->_specialSoundNum = 0;
_soundMan->removeSample(1);
_soundMan->removeSample(2);
@@ -394,7 +395,7 @@ bool HopkinsEngine::runWin95Demo() {
_globals->_eventMode = EVENTMODE_ALT; // CHECKME!
_graphicsMan->clearScreen();
_graphicsMan->clearPalette();
- _animMan->playAnim("JOUR1A.anm", 12, 12, 2000);
+ _animMan->playAnim("JOUR1A.ANM", "JOUR1A.ANM", 12, 12, 2000);
_globals->_eventMode = EVENTMODE_DEFAULT;
_globals->_exitId = 300;
break;
@@ -417,7 +418,7 @@ bool HopkinsEngine::runWin95Demo() {
_globals->_eventMode = EVENTMODE_ALT; // CHECKME!
_graphicsMan->clearScreen();
_graphicsMan->clearPalette();
- _animMan->playAnim("JOUR4A.anm", 12, 12, 2000);
+ _animMan->playAnim("JOUR4A.ANM", "JOUR4A.ANM", 12, 12, 2000);
_globals->_eventMode = EVENTMODE_DEFAULT;
_globals->_exitId = 300;
break;
@@ -453,7 +454,7 @@ bool HopkinsEngine::runLinuxDemo() {
_globals->_eventMode = EVENTMODE_DEFAULT;
_globals->_characterSpriteBuf = _fileIO->loadFile("PERSO.SPR");
- _globals->_characterType = 0;
+ _globals->_characterType = CHARACTER_HOPKINS;
_objectsMan->_mapCarPosX = _objectsMan->_mapCarPosY = 0;
memset(_globals->_saveData, 0, 2000);
_globals->_exitId = 0;
@@ -529,9 +530,9 @@ bool HopkinsEngine::runLinuxDemo() {
_graphicsMan->_fadingFl = true;
if (!_globals->_censorshipFl)
- _animMan->playAnim("BANQUE.ANM", 200, 28, 200);
+ _animMan->playAnim("BANQUE.ANM", "BANKUK.ANM", 200, 28, 200);
else
- _animMan->playAnim("BANKUK.ANM", 200, 28, 200);
+ _animMan->playAnim("BANKUK.ANM", "BANQUE.ANM", 200, 28, 200);
_soundMan->_specialSoundNum = 0;
_soundMan->removeSample(1);
_soundMan->removeSample(2);
@@ -705,7 +706,7 @@ bool HopkinsEngine::runLinuxDemo() {
_graphicsMan->clearScreen();
_graphicsMan->clearPalette();
_graphicsMan->_fadingFl = true;
- _animMan->playAnim("JOUR1A.anm", 12, 12, 2000);
+ _animMan->playAnim("JOUR1A.ANM", "JOUR1A.ANM", 12, 12, 2000);
_globals->_eventMode = EVENTMODE_DEFAULT;
_globals->_exitId = 300;
break;
@@ -717,7 +718,7 @@ bool HopkinsEngine::runLinuxDemo() {
_graphicsMan->clearScreen();
_graphicsMan->clearPalette();
_graphicsMan->_fadingFl = true;
- _animMan->playAnim("JOUR3A.anm", 12, 12, 2000);
+ _animMan->playAnim("JOUR3A.ANM", "JOUR3A.ANM", 12, 12, 2000);
_globals->_eventMode = EVENTMODE_DEFAULT;
_globals->_exitId = 300;
break;
@@ -729,7 +730,7 @@ bool HopkinsEngine::runLinuxDemo() {
_graphicsMan->clearScreen();
_graphicsMan->clearPalette();
_graphicsMan->_fadingFl = true;
- _animMan->playAnim("JOUR4A.anm", 12, 12, 2000);
+ _animMan->playAnim("JOUR4A.ANM", "JOUR4A.ANM", 12, 12, 2000);
_globals->_eventMode = EVENTMODE_DEFAULT;
_globals->_exitId = 300;
break;
@@ -790,18 +791,21 @@ bool HopkinsEngine::runFull() {
_globals->_speed = 2;
_globals->_eventMode = EVENTMODE_IGNORE;
_graphicsMan->_fadingFl = true;
- _animMan->playAnim("MP.ANM", 10, 16, 200);
+ _animMan->playAnim("MP.ANM", "MP.ANM", 10, 16, 200);
} else {
- _animMan->playAnim("MP.ANM", 10, 16, 200);
+ _animMan->playAnim("MP.ANM", "MP.ANM", 10, 16, 200);
_graphicsMan->fadeOutLong();
}
}
+ _events->mouseOff();
+
if (!_events->_escKeyFl && _startGameSlot == -1) {
playIntro();
if (shouldQuit())
return false;
}
+
if (getPlatform() != Common::kPlatformLinux && _startGameSlot == -1) {
_graphicsMan->fadeOutShort();
_graphicsMan->loadImage("H2");
@@ -811,14 +815,17 @@ bool HopkinsEngine::runFull() {
}
_globals->_eventMode = EVENTMODE_DEFAULT;
_globals->_characterSpriteBuf = _fileIO->loadFile("PERSO.SPR");
- _globals->_characterType = 0;
+ _globals->_characterType = CHARACTER_HOPKINS;
_objectsMan->_mapCarPosX = _objectsMan->_mapCarPosY = 0;
memset(_globals->_saveData, 0, 2000);
_globals->_exitId = 0;
- if (_startGameSlot != -1)
+
+ if (_startGameSlot != -1) {
+ _soundMan->playSound(28);
_saveLoad->loadGame(_startGameSlot);
+ }
for (;;) {
if (_globals->_exitId == 300)
@@ -870,11 +877,11 @@ bool HopkinsEngine::runFull() {
_graphicsMan->_fadingFl = true;
if (!_globals->_censorshipFl)
- _animMan->playAnim("BANQUE.ANM", 200, 28, 200);
+ _animMan->playAnim("BANQUE.ANM", "BANKUK.ANM", 200, 28, 200);
else
- _animMan->playAnim("BANKUK.ANM", 200, 28, 200);
+ _animMan->playAnim("BANKUK.ANM", "BANQUE.ANM", 200, 28, 200);
} else {
- _animMan->playAnim("BANQUE.ANM", 200, 28, 200);
+ _animMan->playAnim("BANQUE.ANM", "BANKUK.ANM", 200, 28, 200);
}
_soundMan->_specialSoundNum = 0;
@@ -1002,14 +1009,14 @@ bool HopkinsEngine::runFull() {
if (getPlatform() == Common::kPlatformLinux) {
_soundMan->playSound(29);
_graphicsMan->_fadingFl = true;
- _animMan->playAnim("PURG1A.ANM", 12, 18, 50);
+ _animMan->playAnim("PURG1A.ANM", "PURG1.ANM", 12, 18, 50);
} else if (getPlatform() == Common::kPlatformWindows) {
_soundMan->playSound(29);
- _animMan->playAnim("PURG1A.ANM", 12, 18, 50);
+ _animMan->playAnim("PURG1A.ANM", "PURG1.ANM", 12, 18, 50);
_graphicsMan->fadeOutShort();
} else {
_soundMan->playSound(6);
- _animMan->playAnim("PURG1A.ANM", 12, 18, 50);
+ _animMan->playAnim("PURG1A.ANM", "PURG1.ANM", 12, 18, 50);
_graphicsMan->fadeOutShort();
}
_globals->_eventMode = EVENTMODE_DEFAULT;
@@ -1046,7 +1053,7 @@ bool HopkinsEngine::runFull() {
_soundMan->playSound(6);
if (getPlatform() == Common::kPlatformLinux)
_graphicsMan->_fadingFl = true;
- _animMan->playAnim("PURG2A.ANM", 12, 18, 50);
+ _animMan->playAnim("PURG2A.ANM", "PURG2.ANM", 12, 18, 50);
if (getPlatform() != Common::kPlatformLinux)
_graphicsMan->fadeOutShort();
_globals->_eventMode = EVENTMODE_DEFAULT;
@@ -1408,7 +1415,7 @@ bool HopkinsEngine::runFull() {
_graphicsMan->clearScreen();
_graphicsMan->clearPalette();
_soundMan->playSound(6);
- _animMan->playAnim("PURG1A.ANM", 12, 18, 50);
+ _animMan->playAnim("PURG1A.ANM", "PURG1.ANM", 12, 18, 50);
_graphicsMan->fadeOutShort();
_globals->_eventMode = EVENTMODE_DEFAULT;
}
@@ -1480,7 +1487,7 @@ bool HopkinsEngine::runFull() {
_graphicsMan->clearPalette();
if (getPlatform() == Common::kPlatformLinux)
_graphicsMan->_fadingFl = true;
- _animMan->playAnim("JOUR1A.ANM", 12, 12, 2000);
+ _animMan->playAnim("JOUR1A.ANM", "JOUR1A.ANM", 12, 12, 2000);
_globals->_eventMode = EVENTMODE_DEFAULT;
_globals->_exitId = 300;
break;
@@ -1492,7 +1499,7 @@ bool HopkinsEngine::runFull() {
_graphicsMan->clearPalette();
if (getPlatform() == Common::kPlatformLinux)
_graphicsMan->_fadingFl = true;
- _animMan->playAnim("JOUR3A.ANM", 12, 12, 2000);
+ _animMan->playAnim("JOUR3A.ANM", "JOUR3A.ANM", 12, 12, 2000);
_globals->_eventMode = EVENTMODE_DEFAULT;
_globals->_exitId = 300;
break;
@@ -1504,7 +1511,7 @@ bool HopkinsEngine::runFull() {
_graphicsMan->clearPalette();
if (getPlatform() == Common::kPlatformLinux)
_graphicsMan->_fadingFl = true;
- _animMan->playAnim("JOUR4A.ANM", 12, 12, 2000);
+ _animMan->playAnim("JOUR4A.ANM", "JOUR4A.ANM", 12, 12, 2000);
_globals->_eventMode = EVENTMODE_DEFAULT;
_globals->_exitId = 300;
break;
@@ -1523,7 +1530,7 @@ bool HopkinsEngine::runFull() {
//_globals->_exitId = WBASE(); // Handles the 3D Doom level (Windows)
_soundMan->stopSound();
_globals->_characterSpriteBuf = _fileIO->loadFile("PERSO.SPR");
- _globals->_characterType = 0;
+ _globals->_characterType = CHARACTER_HOPKINS;
_globals->_eventMode = EVENTMODE_DEFAULT;
_graphicsMan->_lineNbr = SCREEN_WIDTH;
break;
@@ -1534,10 +1541,6 @@ bool HopkinsEngine::runFull() {
return true;
}
-bool HopkinsEngine::shouldQuit() const {
- return g_system->getEventManager()->shouldQuit();
-}
-
int HopkinsEngine::getRandomNumber(int maxNumber) {
return _randomSource.getRandomNumber(maxNumber);
}
@@ -1599,22 +1602,25 @@ void HopkinsEngine::playIntro() {
_events->refreshScreenAndEvents();
_soundMan->playSound(16);
_animMan->setClearAnimFlag();
- _animMan->playAnim("J1.anm", 12, 12, 50);
+
+ _animMan->playAnim("J1.ANM", "J1.ANM", 12, 12, 50);
if (shouldQuit() || _events->_escKeyFl)
return;
-
+ _events->mouseOff();
_soundMan->mixVoice(1, 3);
- _animMan->playAnim("J2.anm", 12, 12, 50);
+ _animMan->playAnim("J2.ANM", "J2.ANM", 12, 12, 50);
if (shouldQuit() || _events->_escKeyFl)
return;
+ _events->mouseOff();
_soundMan->mixVoice(2, 3);
- _animMan->playAnim("J3.anm", 12, 12, 50);
+ _animMan->playAnim("J3.ANM", "J3.ANM", 12, 12, 50);
if (shouldQuit() || _events->_escKeyFl)
return;
+ _events->mouseOff();
_soundMan->mixVoice(3, 3);
_graphicsMan->clearScreen();
_graphicsMan->clearPalette();
@@ -1694,7 +1700,7 @@ void HopkinsEngine::playIntro() {
_soundMan->_specialSoundNum = 5;
_graphicsMan->_fadingFl = true;
- _animMan->playAnim("ELEC.ANM", 10, 26, 200);
+ _animMan->playAnim("ELEC.ANM", "ELEC.ANM", 10, 26, 200);
_soundMan->_specialSoundNum = 0;
if (shouldQuit() || _events->_escKeyFl)
@@ -1781,22 +1787,22 @@ void HopkinsEngine::playIntro() {
_soundMan->playSound(3);
_soundMan->_specialSoundNum = 1;
_animMan->setClearAnimFlag();
- _animMan->playAnim("INTRO1.anm", 10, 24, 18);
+ _animMan->playAnim("INTRO1.ANM", "INTRO1.ANM", 10, 24, 18);
_soundMan->_specialSoundNum = 0;
if (shouldQuit() || _events->_escKeyFl)
return;
- _animMan->playAnim("INTRO2.anm", 10, 24, 18);
+ _animMan->playAnim("INTRO2.ANM", "INTRO2.ANM", 10, 24, 18);
if (shouldQuit() || _events->_escKeyFl)
return;
- _animMan->playAnim("INTRO3.anm", 10, 24, 200);
+ _animMan->playAnim("INTRO3.ANM", "INTRO3.ANM", 10, 24, 200);
if (shouldQuit() || _events->_escKeyFl)
return;
_graphicsMan->_fadingFl = true;
_animMan->unsetClearAnimFlag();
- _animMan->playAnim("J4.anm", 12, 12, 1000);
+ _animMan->playAnim("J4.ANM", "J4.ANM", 12, 12, 1000);
break;
}
}
@@ -1855,7 +1861,7 @@ void HopkinsEngine::bombExplosion() {
_globals->_eventMode = EVENTMODE_IGNORE;
_soundMan->_specialSoundNum = 199;
_graphicsMan->_fadingFl = true;
- _animMan->playAnim("BOMBE2A.ANM", 50, 14, 500);
+ _animMan->playAnim("BOMBE2A.ANM", "BOMBE2.ANM", 50, 14, 500);
_soundMan->_specialSoundNum = 0;
_graphicsMan->loadImage("IM15");
_animMan->loadAnim("ANIM15");
@@ -1889,7 +1895,10 @@ void HopkinsEngine::bombExplosion() {
}
void HopkinsEngine::restoreSystem() {
- quitGame();
+ // If the game isn't alerady trying to quit, flag that quitting is needed
+ if (!shouldQuit())
+ quitGame();
+
_events->refreshEvents();
}
@@ -1962,31 +1971,31 @@ void HopkinsEngine::playSubmarineCutscene() {
_graphicsMan->clearPalette();
_soundMan->playSound(25);
_animMan->setClearAnimFlag();
- _animMan->playAnim("base00a.anm", 10, 18, 18);
+ _animMan->playAnim("BASE00A.ANM", "BASE00.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("base05a.anm", 10, 18, 18);
+ _animMan->playAnim("BASE05A.ANM", "BASE05.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("base10a.anm", 10, 18, 18);
+ _animMan->playAnim("BASE10A.ANM", "BASE10.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("base20a.anm", 10, 18, 18);
+ _animMan->playAnim("BASE20A.ANM", "BASE20.ANM", 10, 18, 18);
// CHECKME: The original code was doing the opposite test, which was a bug.
if (!_events->_escKeyFl)
- _animMan->playAnim("base30a.anm", 10, 18, 18);
+ _animMan->playAnim("BASE30A.ANM", "BASE30.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("base40a.anm", 10, 18, 18);
+ _animMan->playAnim("BASE40A.ANM", "BASE40.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("base50a.anm", 10, 18, 18);
+ _animMan->playAnim("BASE50A.ANM", "BASE50.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("OC00a.anm", 10, 18, 18);
+ _animMan->playAnim("OC00A.ANM", "OC00.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("OC05a.anm", 10, 18, 18);
+ _animMan->playAnim("OC05A.ANM", "OC05.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("OC10a.anm", 10, 18, 18);
+ _animMan->playAnim("OC10A.ANM", "OC10.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("OC20a.anm", 10, 18, 18);
+ _animMan->playAnim("OC20A.ANM", "OC20.ANM", 10, 18, 18);
if (!_events->_escKeyFl) {
_graphicsMan->_fadingFl = true;
- _animMan->playAnim("OC30a.anm", 10, 18, 18);
+ _animMan->playAnim("OC30A.ANM", "OC30.ANM", 10, 18, 18);
}
_events->_escKeyFl = false;
@@ -2108,7 +2117,7 @@ void HopkinsEngine::playEnding() {
_soundMan->_specialSoundNum = 200;
_soundMan->_skipRefreshFl = true;
_graphicsMan->_fadingFl = true;
- _animMan->playAnim("BERM.ANM", 100, 24, 300);
+ _animMan->playAnim("BERM.ANM", "BERM.ANM", 100, 24, 300);
_graphicsMan->endDisplayBob();
_soundMan->removeSample(1);
_graphicsMan->loadImage("PLAN3");
@@ -2125,15 +2134,16 @@ void HopkinsEngine::playEnding() {
_globals->_eventMode = EVENTMODE_IGNORE;
_soundMan->_specialSoundNum = 0;
_graphicsMan->_fadingFl = true;
- _animMan->playAnim("JOUR2A.anm", 12, 12, 1000);
+ _animMan->playAnim("JOUR2A.anm", "JOUR2A.anm", 12, 12, 1000);
_soundMan->playSound(11);
_graphicsMan->clearScreen();
_graphicsMan->clearPalette();
- _animMan->playAnim("FF1a.anm", 18, 18, 9);
- _animMan->playAnim("FF1a.anm", 9, 18, 9);
- _animMan->playAnim("FF1a.anm", 9, 18, 18);
- _animMan->playAnim("FF1a.anm", 9, 18, 9);
- _animMan->playAnim("FF2a.anm", 24, 24, 100);
+ _animMan->playAnim("FF1a.anm", "FF1.anm", 18, 18, 9);
+ _animMan->playAnim("FF1a.anm", "FF1.anm", 9, 18, 9);
+ _animMan->playAnim("FF1a.anm", "FF1.anm", 9, 18, 18);
+ _animMan->playAnim("FF1a.anm", "FF1.anm", 9, 18, 9);
+ _animMan->playAnim("FF2a.anm", "FF2.anm", 24, 24, 100);
+ _events->mouseOff();
displayCredits();
_globals->_eventMode = EVENTMODE_DEFAULT;
_globals->_exitId = 300;
@@ -2142,7 +2152,7 @@ void HopkinsEngine::playEnding() {
} else {
_soundMan->_specialSoundNum = 200;
_soundMan->_skipRefreshFl = true;
- _animMan->playAnim2("BERM.ANM", 100, 24, 300);
+ _animMan->playAnim2("BERM.ANM", "BERM.ANM", 100, 24, 300);
_objectsMan->stopBobAnimation(7);
_objectsMan->setBobAnimation(8);
_globals->_introSpeechOffFl = true;
@@ -2167,12 +2177,12 @@ void HopkinsEngine::playEnding() {
_soundMan->_specialSoundNum = 0;
_dialog->enableInvent();
_globals->_disableInventFl = false;
- _animMan->playAnim("JOUR4A.anm", 12, 12, 1000);
+ _animMan->playAnim("JOUR4A.ANM", "JOUR4A.ANM", 12, 12, 1000);
_globals->_eventMode = EVENTMODE_DEFAULT;
_globals->_exitId = 300;
}
_globals->_characterSpriteBuf = _fileIO->loadFile("PERSO.SPR");
- _globals->_characterType = 0;
+ _globals->_characterType = CHARACTER_HOPKINS;
_globals->_eventMode = EVENTMODE_DEFAULT;
}
@@ -2183,36 +2193,36 @@ void HopkinsEngine::playPlaneCutscene() {
_graphicsMan->clearPalette();
_animMan->unsetClearAnimFlag();
- _animMan->playAnim("aerop00a.anm", 10, 18, 18);
+ _animMan->playAnim("AEROP00A.ANM", "AEROP00.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("serop10a.anm", 10, 18, 18);
+ _animMan->playAnim("SEROP10A.ANM", "SEROP10A.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("aerop20a.anm", 10, 18, 18);
+ _animMan->playAnim("AEROP20A.ANM", "AEROP20.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("aerop30a.anm", 10, 18, 18);
+ _animMan->playAnim("AEROP30A.ANM", "AEROP30.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("aerop40a.anm", 10, 18, 18);
+ _animMan->playAnim("AEROP40A.ANM", "AEROP40.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("aerop50a.anm", 10, 18, 18);
+ _animMan->playAnim("AEROP50A.ANM", "AEROP50.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("aerop60a.anm", 10, 18, 18);
+ _animMan->playAnim("AEROP60A.ANM", "AEROP60.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("aerop70a.anm", 10, 18, 18);
+ _animMan->playAnim("AEROP70A.ANM", "AEROP70.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("trans00a.anm", 10, 18, 18);
+ _animMan->playAnim("TRANS00A.ANM", "TRANS00.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("trans10a.anm", 10, 18, 18);
+ _animMan->playAnim("TRANS10A.ANM", "TRANS10.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("trans15a.anm", 10, 18, 18);
+ _animMan->playAnim("TRANS15A.ANM", "TRANS15.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("trans20a.anm", 10, 18, 18);
+ _animMan->playAnim("TRANS20A.ANM", "TRANS20.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("trans30a.anm", 10, 18, 18);
+ _animMan->playAnim("TRANS30A.ANM", "TRANS30.ANM", 10, 18, 18);
if (!_events->_escKeyFl)
- _animMan->playAnim("trans40a.anm", 10, 18, 18);
+ _animMan->playAnim("TRANS40A.ANM", "TRANS40.ANM", 10, 18, 18);
if (!_events->_escKeyFl) {
_graphicsMan->_fadingFl = true;
- _animMan->playAnim("PARA00a.anm", 9, 9, 9);
+ _animMan->playAnim("PARA00A.ANM", "PARA00.ANM", 9, 9, 9);
}
_events->_escKeyFl = false;
@@ -2353,21 +2363,34 @@ void HopkinsEngine::loadCredits() {
_globals->_creditsPosY = 440;
_globals->_creditsStep = 45;
byte *bufPtr;
+ Common::String filename;
switch (_globals->_language) {
case LANG_EN:
- bufPtr = _fileIO->loadFile("CREAN.TXT");
+ filename = "CREAN.TXT";
break;
case LANG_FR:
- bufPtr = _fileIO->loadFile("CREFR.TXT");
+ filename = "CREFR.TXT";
break;
case LANG_SP:
- bufPtr = _fileIO->loadFile("CREES.TXT");
+ filename = "CREES.TXT";
break;
default:
error("Unhandled language");
break;
}
+ if (!_fileIO->fileExists(filename)) {
+ _globals->_creditsLineNumb = 1;
+ _globals->_creditsItem[0]._color = '1';
+ _globals->_creditsItem[0]._actvFl = true;
+ _globals->_creditsItem[0]._linePosY = _globals->_creditsPosY;
+ strcpy((char *)_globals->_creditsItem[0]._line, "The End");
+ _globals->_creditsItem[0]._lineSize = 7;
+ return;
+ }
+
+ bufPtr = _fileIO->loadFile(filename);
+
byte *curPtr = bufPtr;
int idxLines = 0;
bool loopCond = false;
@@ -2441,13 +2464,14 @@ void HopkinsEngine::displayCredits() {
_globals->_eventMode = EVENTMODE_CREDITS;
_globals->_creditsStartX = _globals->_creditsEndX = _globals->_creditsStartY = _globals->_creditsEndY = -1;
int soundId = 28;
+
do {
for (int i = 0; i < _globals->_creditsLineNumb; ++i) {
if (_globals->_creditsItem[i]._actvFl) {
int nextY = _globals->_creditsPosY + i * _globals->_creditsStep;
_globals->_creditsItem[i]._linePosY = nextY;
- if ((nextY - 21 >= 0) && (nextY - 21 <= 418)) {
+ if ((nextY >= 51) && (nextY <= 460)) {
int col = 0;
switch (_globals->_creditsItem[i]._color) {
case '1':
@@ -2472,7 +2496,7 @@ void HopkinsEngine::displayCredits() {
--_globals->_creditsPosY;
if (_globals->_creditsStartX != -1 || _globals->_creditsEndX != -1 || _globals->_creditsStartY != -1 || _globals->_creditsEndY != -1) {
_events->refreshScreenAndEvents();
- _graphicsMan->copySurface(_graphicsMan->_backBuffer, 60, 50, 520, 380, _graphicsMan->_frontBuffer, 60, 50);
+ _graphicsMan->copySurface(_graphicsMan->_backBuffer, 60, 50, 520, 430, _graphicsMan->_frontBuffer, 60, 50);
} else {
_events->refreshScreenAndEvents();
}
@@ -2800,7 +2824,7 @@ void HopkinsEngine::handleOceanMaze(int16 curExitId, Common::String backgroundFi
_objectsMan->removeSprite(0);
_objectsMan->clearScreen();
_globals->_characterSpriteBuf = _fileIO->loadFile("PERSO.SPR");
- _globals->_characterType = 0;
+ _globals->_characterType = CHARACTER_HOPKINS;
}
void HopkinsEngine::syncSoundSettings() {