diff options
-rw-r--r-- | engines/mads/conversations.cpp | 18 | ||||
-rw-r--r-- | engines/mads/conversations.h | 22 |
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(); |