aboutsummaryrefslogtreecommitdiff
path: root/engines/access/scripts.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/access/scripts.cpp')
-rw-r--r--engines/access/scripts.cpp70
1 files changed, 68 insertions, 2 deletions
diff --git a/engines/access/scripts.cpp b/engines/access/scripts.cpp
index e74b1853a0..8ac0de78fa 100644
--- a/engines/access/scripts.cpp
+++ b/engines/access/scripts.cpp
@@ -133,7 +133,7 @@ void Scripts::executeCommand(int commandIndex) {
&Scripts::cmdFreeSound, &Scripts::cmdSetVideoSound, &Scripts::cmdPlayVideoSound,
&Scripts::CMDPUSHLOCATION, &Scripts::CMDPUSHLOCATION, &Scripts::CMDPUSHLOCATION,
&Scripts::CMDPUSHLOCATION, &Scripts::CMDPUSHLOCATION, &Scripts::cmdPlayerOff,
- &Scripts::cmdPlayerOn, &Scripts::CMDDEAD, &Scripts::cmdFadeOut,
+ &Scripts::cmdPlayerOn, &Scripts::cmdDead, &Scripts::cmdFadeOut,
&Scripts::CMDENDVID
};
@@ -740,7 +740,73 @@ void Scripts::cmdPlayerOn() {
_vm->_player->_playerOff = false;
}
-void Scripts::CMDDEAD() { error("TODO CMDDEAD"); }
+void Scripts::cmdDead() {
+ int deathId = _data->readByte();
+ _vm->_events->hideCursor();
+ _vm->_screen->forceFadeOut();
+ cmdFreeSound();
+
+ _vm->_sound->_soundTable[0] = _vm->_files->loadFile(98, 44);
+ _vm->_sound->_soundPriority[1] = 1;
+
+ _vm->_screen->clearScreen();
+ _vm->_screen->setPanel(3);
+
+ if (deathId != 10) {
+ _vm->_sound->newMusic(62, 0);
+ _vm->_files->_loadPalFlag = false;
+ _vm->_files->loadScreen(94, 0);
+ _vm->_files->_loadPalFlag = true;
+ _vm->_buffer2.copyFrom(*_vm->_screen);
+
+ for (int i = 0; i < 3; ++i) {
+ _vm->_sound->playSound(0);
+ _vm->_screen->forceFadeIn();
+ _vm->_sound->playSound(0);
+ _vm->_screen->forceFadeOut();
+ }
+ _vm->freeCells();
+
+ // Load the cell list for the death screen
+ DeathEntry &de = _vm->_deaths[deathId];
+ Common::Array<CellIdent> cells;
+ cells.push_back(_vm->_deaths._cells[de._screenId]);
+ _vm->loadCells(cells);
+
+ _vm->_screen->setDisplayScan();
+ _vm->_files->_loadPalFlag = false;
+ _vm->_files->loadScreen(&_vm->_buffer2, 94, 1);
+ _vm->_screen->setIconPalette();
+
+ _vm->_buffer2.plotImage(_vm->_objectsTable[0], 0, Common::Point(105, 25));
+ _vm->_buffer2.copyTo(_vm->_screen);
+ _vm->_screen->forceFadeIn();
+
+ _vm->_fonts._charSet._hi = 10;
+ _vm->_fonts._charSet._lo = 1;
+ _vm->_fonts._charFor._lo = 55;
+ _vm->_fonts._charFor._hi = 255;
+ _vm->_screen->_maxChars = 46;
+ _vm->_screen->_printOrg = Common::Point(20, 155);
+ _vm->_screen->_printStart = Common::Point(20, 155);
+
+ Common::String &msg = de._msg;
+ _vm->_printEnd = 180;
+ _vm->_fonts._font2.printText(_vm->_screen, msg);
+ _vm->_screen->forceFadeOut();
+
+ _vm->_sound->newMusic(0, 1);
+ _vm->_events->showCursor();
+ _vm->_room->clearRoom();
+ _vm->freeChar();
+
+ warning("TODO: restart game");
+ _vm->quitGame();
+ }
+ else {
+ _vm->quitGame();
+ }
+}
void Scripts::cmdFadeOut() {
_vm->_screen->forceFadeOut();