aboutsummaryrefslogtreecommitdiff
path: root/engines/saga
diff options
context:
space:
mode:
Diffstat (limited to 'engines/saga')
-rw-r--r--engines/saga/actor.h9
-rw-r--r--engines/saga/saga.cpp4
2 files changed, 9 insertions, 4 deletions
diff --git a/engines/saga/actor.h b/engines/saga/actor.h
index 3296246cba..1ed70d7ff0 100644
--- a/engines/saga/actor.h
+++ b/engines/saga/actor.h
@@ -41,7 +41,7 @@ namespace Saga {
class HitZone;
-//#define ACTOR_DEBUG //only for actor pathfinding debug!
+// #define ACTOR_DEBUG 1 //only for actor pathfinding debug!
#define ACTOR_BARRIERS_MAX 16
@@ -97,7 +97,8 @@ enum ActorActions {
enum SpeechFlags {
kSpeakNoAnimate = 1,
kSpeakAsync = 2,
- kSpeakSlow = 4
+ kSpeakSlow = 4,
+ kSpeakForceText = 8
};
enum ActorFrameTypes {
@@ -592,6 +593,10 @@ public:
return _activeSpeech.stringsCount > 0;
}
+ int isForcedTextShown() {
+ return _activeSpeech.speechFlags & kSpeakForceText;
+ }
+
void saveState(Common::OutSaveFile *out);
void loadState(Common::InSaveFile *in);
diff --git a/engines/saga/saga.cpp b/engines/saga/saga.cpp
index ea42eac0d7..5aa6c40572 100644
--- a/engines/saga/saga.cpp
+++ b/engines/saga/saga.cpp
@@ -289,8 +289,8 @@ int SagaEngine::go() {
msec = MAX_TIME_DELTA;
}
- // Since Puzzle is actorless, we do it here
- if (_puzzle->isActive()) {
+ // Since Puzzle and forced text are actorless, we do them here
+ if (_puzzle->isActive() || _actor->isForcedTextShown()) {
_actor->handleSpeech(msec);
} else if (!_scene->isInIntro()) {
if (_interface->getMode() == kPanelMain ||