aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--saga/ihnm_introproc.cpp6
-rw-r--r--saga/interface.cpp11
-rw-r--r--saga/interface.h3
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
};