aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/mads/conversations.cpp18
-rw-r--r--engines/mads/conversations.h22
2 files changed, 29 insertions, 11 deletions
diff --git a/engines/mads/conversations.cpp b/engines/mads/conversations.cpp
index 2af74541f7..5077abdc6a 100644
--- a/engines/mads/conversations.cpp
+++ b/engines/mads/conversations.cpp
@@ -35,7 +35,8 @@ GameConversations::GameConversations(MADSEngine *vm) : _vm(vm) {
_inputMode = kInputBuildingSentences;
_startFrameNumber = 0;
_speakerVal = 0;
- _heldVal = _releaseVal = 0;
+ _currentMode = CONVMODE_NONE;
+ _priorMode = CONVMODE_NONE;
_val1 =_val5 = 0;
_vars = _nextStartNode = nullptr;
_heroTrigger = 0;
@@ -99,8 +100,9 @@ void GameConversations::run(int id) {
_heroTrigger = 0;
_interlocutorTrigger = 0;
_val1 = 0;
- _heldVal = 0;
+ _currentMode = CONVMODE_0;
_val5 = -1;
+ _speakerVal = 1;
// Initialize speaker arrays
Common::fill(&_speakerActive[0], &_speakerActive[MAX_SPEAKERS], false);
@@ -233,16 +235,16 @@ int *GameConversations::getVariable(int idx) {
}
void GameConversations::hold() {
- if (_heldVal != -1) {
- _releaseVal = _heldVal;
- _heldVal = -1;
+ if (_currentMode != CONVMODE_NONE) {
+ _priorMode = _currentMode;
+ _currentMode = CONVMODE_NONE;
}
}
void GameConversations::release() {
- if (_heldVal == -1) {
- _heldVal = _releaseVal;
- if (_heldVal == 1 || _heldVal == 2)
+ if (_currentMode == CONVMODE_NONE) {
+ _currentMode = _priorMode;
+ if (_currentMode == 1 || _currentMode == 2)
update(true);
}
}
diff --git a/engines/mads/conversations.h b/engines/mads/conversations.h
index 657abae249..b62f4fbf22 100644
--- a/engines/mads/conversations.h
+++ b/engines/mads/conversations.h
@@ -33,6 +33,21 @@ namespace MADS {
#define MAX_CONVERSATIONS 5
#define MAX_SPEAKERS 5
+enum ConversationMode {
+ CONVMODE_NONE = -1,
+ CONVMODE_0 = 0,
+ CONVMODE_1 = 1,
+ CONVMODE_2 = 2,
+ CONVMODE_3 = 3,
+ CONVMODE_4 = 4,
+ CONVMODE_5 = 5,
+ CONVMODE_6 = 6,
+ CONVMODE_7 = 7,
+ CONVMODE_8 = 8,
+ CONVMODE_9 = 9,
+ CONVMODE_10 = 10
+};
+
enum DialogCommands {
cmdNodeEnd = 0,
//
@@ -180,7 +195,8 @@ private:
int _arr6[MAX_SPEAKERS];
InputMode _inputMode;
int _val1, _val5;
- int _heldVal, _releaseVal;
+ ConversationMode _currentMode;
+ ConversationMode _priorMode;
int _speakerVal;
int _heroTrigger;
TriggerMode _heroTriggerMode;
@@ -267,12 +283,12 @@ public:
int *getVariable(int idx);
/**
- * Hold a ??? value
+ * Hold the current mode value
*/
void hold();
/**
- * Release a prevoiusly held value
+ * Release the prevoiusly held mode value
*/
void release();