diff options
-rw-r--r-- | saga/ihnm_introproc.cpp | 6 | ||||
-rw-r--r-- | saga/interface.cpp | 11 | ||||
-rw-r--r-- | saga/interface.h | 3 |
3 files changed, 19 insertions, 1 deletions
diff --git a/saga/ihnm_introproc.cpp b/saga/ihnm_introproc.cpp index 7d9a21e0ee..091acda0a3 100644 --- a/saga/ihnm_introproc.cpp +++ b/saga/ihnm_introproc.cpp @@ -28,6 +28,7 @@ #include "saga/animation.h" #include "saga/events.h" +#include "saga/interface.h" #include "saga/sndres.h" #include "saga/music.h" @@ -91,6 +92,11 @@ int Scene::IHNMStartProc() { LoadSceneParams firstScene; + // The original used the "play video" mechanism for the first part of + // the intro. We just use that panel mode. + + _vm->_interface->setMode(kPanelVideo); + n_introscenes = ARRAYSIZE(IHNM_IntroList); for (i = 0; i < n_introscenes; i++) { diff --git a/saga/interface.cpp b/saga/interface.cpp index 2c6418b3b1..946d845ade 100644 --- a/saga/interface.cpp +++ b/saga/interface.cpp @@ -352,6 +352,17 @@ bool Interface::processAscii(uint16 ascii, bool synthetic) { return true; } break; + case kPanelVideo: + if (ascii == 27) { // Esc + if (_vm->_scene->isInIntro()) { + _vm->_scene->skipScene(); + } else { + if (!_disableAbortSpeeches) + _vm->_actor->abortAllSpeeches(); + } + _vm->_scene->cutawaySkip(); + } + break; case kPanelOption: // TODO: check input dialog keys if (ascii == 27 || ascii == 13) { // Esc or Enter diff --git a/saga/interface.h b/saga/interface.h index 2b0c4d5d3b..4fdacf30c0 100644 --- a/saga/interface.h +++ b/saga/interface.h @@ -69,7 +69,8 @@ enum PanelModes { kPanelMap, kPanelSceneSubstitute, kPanelChapterSelection, - kPanelCutaway + kPanelCutaway, + kPanelVideo // kPanelInventory }; |