diff options
-rw-r--r-- | engines/mads/conversations.cpp | 393 | ||||
-rw-r--r-- | engines/mads/conversations.h | 103 | ||||
-rw-r--r-- | engines/mads/dragonsphere/dragonsphere_scenes1.cpp | 4 | ||||
-rw-r--r-- | engines/mads/mads.cpp | 2 | ||||
-rw-r--r-- | engines/mads/mads.h | 2 | ||||
-rw-r--r-- | engines/mads/phantom/game_phantom.cpp | 2 | ||||
-rw-r--r-- | engines/mads/phantom/phantom_scenes1.cpp | 26 | ||||
-rw-r--r-- | engines/mads/phantom/phantom_scenes2.cpp | 26 | ||||
-rw-r--r-- | engines/mads/phantom/phantom_scenes3.cpp | 2 | ||||
-rw-r--r-- | engines/mads/phantom/phantom_scenes5.cpp | 22 |
10 files changed, 323 insertions, 259 deletions
diff --git a/engines/mads/conversations.cpp b/engines/mads/conversations.cpp index 53b8e7900d..f51759dadf 100644 --- a/engines/mads/conversations.cpp +++ b/engines/mads/conversations.cpp @@ -28,187 +28,226 @@ namespace MADS { -#define MAX_SPEAKERS 5 - -enum DialogCommands { - cmdNodeEnd = 0, - // - cmdHide = 2, - cmdUnhide = 3, - cmdMessage = 4, - // - // - cmdGoto = 7, - // - cmdAssign = 9, - cmdDialogEnd = 255 -}; - -struct ConvDialog { - int16 textLineIndex; // 0-based - int16 speechIndex; // 1-based - uint16 nodeOffset; // offset in section 6 - uint16 nodeSize; // size in section 6 -}; - -struct ConvNode { - uint16 index; - uint16 dialogCount; - int16 unk1; - int16 unk2; - int16 unk3; - - Common::Array<ConvDialog> dialogs; -}; - -struct ConvData { - uint16 nodeCount; // conversation nodes, each one containing several dialog options and messages - uint16 dialogCount; // messages (non-selectable) + texts (selectable) - uint16 messageCount; // messages (non-selectable) - uint16 textLineCount; - uint16 unk2; - uint16 importCount; - uint16 speakerCount; - Common::String portraits[MAX_SPEAKERS]; - bool speakerExists[MAX_SPEAKERS]; - Common::String speechFile; - Common::Array<Common::String> textLines; - Common::Array<ConvNode> convNodes; -}; - -GameConversation::GameConversation(MADSEngine *vm) - : _vm(vm) { - _running = _restoreRunning = 0; +GameConversations::GameConversations(MADSEngine *vm) : _vm(vm) { + _runningConv = nullptr; + _restoreRunning = 0; _nextStartNode = nullptr; + _playerEnabled = false; + _startFrameNumber = 0; + + // Mark all conversation slots as empty + for (int idx = 0; idx < MAX_CONVERSATIONS; ++idx) + _conversations[idx]._convId = -1; } -GameConversation::~GameConversation() { +GameConversations::~GameConversations() { } -void GameConversation::get(int id) { - Common::File inFile; - Common::String fileName = Common::String::format("CONV%03d.CNV", id); +void GameConversations::get(int id) { + // Scan through the conversation list for a free slot + int slotIndex = -1; + for (int idx = 0; idx < MAX_CONVERSATIONS && slotIndex == -1; ++idx) { + if (_conversations[idx]._convId == -1) + slotIndex = idx; + } + if (slotIndex == -1) + error("Too many conversations loaded"); + + // Set the conversation the slot will contain + _conversations[slotIndex]._convId = id; + + // Load the conversation data + Common::String cnvFilename = Common::String::format("CONV%03d.CNV", id); + _conversations[slotIndex]._data.load(cnvFilename); + // TODO: Also handle the .CND file +} - inFile.open(fileName); - MadsPack convFileUnpacked(&inFile); - Common::SeekableReadStream *convFile = convFileUnpacked.getItemStream(0); +ConversationEntry *GameConversations::getConv(int convId) { + for (uint idx = 0; idx < MAX_CONVERSATIONS; ++idx) { + if (_conversations[idx]._convId == convId) + return &_conversations[idx]; + } + + return nullptr; +} + + +void GameConversations::run(int id) { + // If another conversation is running, then stop it first + if (_runningConv) + stop(); + + // Get the next conversation to run + _runningConv = getConv(id); + if (!_runningConv) + error("Specified conversation %d not loaded", id); + + // Initialize needed fields + _startFrameNumber = _vm->_events->getFrameCounter(); + _playerEnabled = _vm->_game->_player._stepEnabled; + //TODO + + // Start the conversation + start(); + + warning("TODO GameConversations::run"); +} + +void GameConversations::start() { + + warning("TODO: GameConversations::start"); +} + +void GameConversations::stop() { + warning("TODO GameConversations::stop"); +} + +void GameConversations::exportPointer(int *val) { + warning("TODO GameConversations::exportPointer"); +} + +void GameConversations::exportValue(int val) { + warning("TODO GameConversations::exportValue"); +} + +void GameConversations::setHeroTrigger(int val) { + _vm->_game->_trigger = val; // HACK + //_running = -1; // HACK + warning("TODO: GameConversations::setHeroTrigger"); +} + +void GameConversations::setInterlocutorTrigger(int val) { + warning("TODO: GameConversations::setInterlocutorTrigger"); +} + +int* GameConversations::getVariable(int idx) { + warning("TODO: GameConversations::getVariable"); + return nullptr; +} + +void GameConversations::hold() { + warning("TODO: GameConversations::hold"); +} + +void GameConversations::release() { + warning("TODO: GameConversations::release"); +} + +void GameConversations::reset(int id) { + warning("TODO: GameConversations::reset"); +} + +void GameConversations::abortConv() { + warning("TODO: GameConversations::abort"); +} +/*------------------------------------------------------------------------*/ + +void ConversationData::load(const Common::String &filename) { + Common::File inFile; char buffer[16]; - ConvData conv; + inFile.open(filename); + MadsPack convFileUnpacked(&inFile); + Common::SeekableReadStream *convFile = convFileUnpacked.getItemStream(0); // **** Section 0: Header ************************************************* - conv.nodeCount = convFile->readUint16LE(); - conv.dialogCount = convFile->readUint16LE(); - conv.messageCount = convFile->readUint16LE(); - conv.textLineCount = convFile->readUint16LE(); - conv.unk2 = convFile->readUint16LE(); - conv.importCount = convFile->readUint16LE(); - conv.speakerCount = convFile->readUint16LE(); - - //debug("Conv %d has %d nodes, %d dialogs, %d messages, %d text lines, %d unk2, %d imports and %d speakers", - // id, conv.nodeCount, conv.dialogCount, conv.messageCount, conv.textLineCount, conv.unk2, conv.importCount, conv.speakerCount); - - for (uint16 i = 0; i < MAX_SPEAKERS; i++) { + _nodeCount = convFile->readUint16LE(); + _dialogCount = convFile->readUint16LE(); + _messageCount = convFile->readUint16LE(); + _textLineCount = convFile->readUint16LE(); + _unk2 = convFile->readUint16LE(); + _importCount = convFile->readUint16LE(); + _speakerCount = convFile->readUint16LE(); + + for (uint idx = 0; idx < MAX_SPEAKERS; ++idx) { convFile->read(buffer, 16); - conv.portraits[i] = buffer; - //debug("Speaker %d, portrait %s", i, conv.portraits[i].c_str()); + _portraits[idx] = buffer; } - for (uint16 i = 0; i < MAX_SPEAKERS; i++) { - conv.speakerExists[i] = convFile->readUint16LE(); - //debug("Speaker %d exists: %d", i, conv.speakerExists[i]); + for (uint idx = 0; idx < MAX_SPEAKERS; ++idx) { + _speakerExists[idx] = convFile->readUint16LE(); } convFile->read(buffer, 14); - conv.speechFile = Common::String(buffer); - //debug("Speech file %s", conv.speechFile.c_str()); - - uint16 textLength = convFile->readUint16LE(); // Total text length in section 5 - convFile->skip(2); // TODO: unknown - uint16 commandLength = convFile->readUint16LE(); // Total length of commands in section 6 - //debug("Node entry commands length: %d", commandLength); - -#if 0 - debug("Section 0 unknown bytes"); - byte *tmp0 = new byte[26]; - convFile->read(tmp0, 26); - Common::hexdump(tmp0, 26); - delete[] tmp0; + _speechFile = Common::String(buffer); + + // Total text length in section 5 + _textSize = convFile->readUint32LE(); + _commandsSize = convFile->readUint32LE(); + + // The rest of the section 0 is padding to allow room for a set of pointers + // to the contents of the remaining sections loaded into memory as a + // continuous data block containing both the header and the sections delete convFile; -#else - warning("Section 0 unknown bytes"); -#endif + // **** Section 1: Nodes ************************************************** convFile = convFileUnpacked.getItemStream(1); - for (uint16 i = 0; i < conv.nodeCount; i++) { + _convNodes.clear(); + for (uint i = 0; i < _nodeCount; i++) { ConvNode node; - node.index = convFile->readUint16LE(); - node.dialogCount = convFile->readUint16LE(); - node.unk1 = convFile->readSint16LE(); // TODO - node.unk2 = convFile->readSint16LE(); // TODO - node.unk3 = convFile->readSint16LE(); // TODO - conv.convNodes.push_back(node); + node._index = convFile->readUint16LE(); + node._dialogCount = convFile->readUint16LE(); + node._unk1 = convFile->readSint16LE(); // TODO + node._unk2 = convFile->readSint16LE(); // TODO + node._unk3 = convFile->readSint16LE(); // TODO + _convNodes.push_back(node); //debug("Node %d, index %d, entries %d - %d, %d, %d", i, node.index, node.dialogCount, node.unk1, node.unk2, node.unk3); } delete convFile; // **** Section 2: Dialogs ************************************************ convFile = convFileUnpacked.getItemStream(2); - assert(convFile->size() == conv.dialogCount * 8); + assert(convFile->size() == _dialogCount * 8); - for (uint16 i = 0; i < conv.nodeCount; i++) { - uint16 dialogCount = conv.convNodes[i].dialogCount; + for (uint idx = 0; idx < _nodeCount; ++idx) { + uint dialogCount = _convNodes[idx]._dialogCount; - for (uint16 j = 0; j < dialogCount; j++) { + for (uint j = 0; j < dialogCount; ++j) { ConvDialog dialog; - dialog.textLineIndex = convFile->readSint16LE(); - dialog.speechIndex = convFile->readSint16LE(); - dialog.nodeOffset = convFile->readUint16LE(); - dialog.nodeSize = convFile->readUint16LE(); - conv.convNodes[i].dialogs.push_back(dialog); - //debug("Node %d, dialog %d: text line %d, speech index %d, node offset %d, node size %d", j, i, dialog.textLineIndex, dialog.speechIndex, dialog.nodeOffset, dialog.nodeSize); + dialog._textLineIndex = convFile->readSint16LE(); + dialog._speechIndex = convFile->readSint16LE(); + dialog._nodeOffset = convFile->readUint16LE(); + dialog._nodeSize = convFile->readUint16LE(); + _convNodes[idx]._dialogs.push_back(dialog); } } delete convFile; - // **** Section 3: ???? *************************************************** -#if 0 - debug("Section 3"); + // **** Section 3: Messages *********************************************** convFile = convFileUnpacked.getItemStream(3); - byte *tmp1 = new byte[convFile->size()]; - convFile->read(tmp1, convFile->size()); - Common::hexdump(tmp1, convFile->size()); - delete[] tmp1; + assert(convFile->size() == _messageCount * 8); + + _messages.resize(_messageCount); + for (uint idx = 0; idx < _messageCount; ++idx) + _messages[idx] = convFile->readUint32LE(); + delete convFile; -#else - warning("Section 3 - TODO"); -#endif + // **** Section 4: Text line offsets ************************************** convFile = convFileUnpacked.getItemStream(4); - assert(convFile->size() == conv.textLineCount * 2); + assert(convFile->size() == _textLineCount * 2); - uint16 *textLineOffsets = new uint16[conv.textLineCount]; // deleted below in section 5 - for (uint16 i = 0; i < conv.textLineCount; i++) + uint16 *textLineOffsets = new uint16[_textLineCount]; // deleted below in section 5 + for (uint16 i = 0; i < _textLineCount; i++) textLineOffsets[i] = convFile->readUint16LE(); delete convFile; // **** Section 5: Text lines ********************************************* convFile = convFileUnpacked.getItemStream(5); - assert(convFile->size() == textLength); + assert(convFile->size() == _textSize); Common::String textLine; - conv.textLines.resize(conv.textLineCount); + _textLines.resize(_textLineCount); char textLineBuffer[256]; uint16 nextOffset; - for (uint16 i = 0; i < conv.textLineCount; i++) { - nextOffset = (i != conv.textLineCount - 1) ? textLineOffsets[i + 1] : convFile->size(); + for (uint16 i = 0; i < _textLineCount; i++) { + nextOffset = (i != _textLineCount - 1) ? textLineOffsets[i + 1] : convFile->size(); convFile->read(textLineBuffer, nextOffset - textLineOffsets[i]); - conv.textLines[i] = Common::String(textLineBuffer); - //debug("Text line %d: %s", i, conv.textLines[i].c_str()); + _textLines[i] = Common::String(textLineBuffer); } delete[] textLineOffsets; @@ -216,13 +255,13 @@ void GameConversation::get(int id) { // **** Section 6: Node entry commands ************************************ convFile = convFileUnpacked.getItemStream(6); - assert(convFile->size() == commandLength); + assert(convFile->size() == _commandsSize); - for (uint16 i = 0; i < conv.nodeCount; i++) { - uint16 dialogCount = conv.convNodes[i].dialogCount; + for (uint16 i = 0; i < _nodeCount; i++) { + uint16 dialogCount = _convNodes[i]._dialogCount; for (uint16 j = 0; j < dialogCount; j++) { - //ConvDialog dialog = conv.convNodes[i].dialogs[j]; + //ConvDialog dialog = _convNodes[i].dialogs[j]; byte command; uint16 chk; @@ -248,8 +287,8 @@ void GameConversation::get(int id) { //debug("Hide node %d", nodeRef); } - } - break; + } + break; case cmdUnhide: { byte count = convFile->readByte(); for (byte k = 0; k < count; k++) { @@ -257,8 +296,8 @@ void GameConversation::get(int id) { //debug("Unhide node %d", nodeRef); } - } - break; + } + break; case cmdMessage: //debug("Message"); convFile->skip(7); // TODO @@ -267,15 +306,15 @@ void GameConversation::get(int id) { convFile->skip(3); // unused? /*byte nodeRef = */convFile->readByte(); //debug("Goto %d", nodeRef); - } - break; + } + break; case cmdAssign: { convFile->skip(3); // unused? /*uint16 value = */convFile->readUint16LE(); /*uint16 variable = */convFile->readUint16LE(); //debug("Variable %d = %d", variable, value); - } - break; + } + break; default: error("Unknown conversation command %d", command); break; @@ -287,76 +326,8 @@ void GameConversation::get(int id) { delete convFile; inFile.close(); - /* - // DEBUG: Show the very first message, and play the very first speech - _vm->_audio->setSoundGroup(conv.speechFile); - uint16 firstText = 0, firstSpeech = 1; - - for (uint16 i = 0; i < conv.convNodes.size(); i++) { - for (uint16 k = 0; k < conv.convNodes[i].dialogs.size(); k++) { - if (conv.convNodes[i].dialogs[k].textLineIndex >= 0) { - firstText = conv.convNodes[i].dialogs[k].textLineIndex; - firstSpeech = conv.convNodes[i].dialogs[k].speechIndex; - break; - } - } - } - - _vm->_audio->playSound(firstSpeech - 1); - - TextDialog *dialog = new TextDialog(_vm, FONT_INTERFACE, Common::Point(0, 100), 30); - dialog->addLine(conv.textLines[firstText]); - dialog->show(); - delete dialog; - */ - - warning("TODO GameConversation::get"); -} - -void GameConversation::run(int id) { - warning("TODO GameConversation::run"); -} - -void GameConversation::stop() { - warning("TODO GameConversation::stop"); -} - -void GameConversation::exportPointer(int *val) { - warning("TODO GameConversation::exportPointer"); -} - -void GameConversation::exportValue(int val) { - warning("TODO GameConversation::exportValue"); -} - -void GameConversation::setHeroTrigger(int val) { - _vm->_game->_trigger = val; // HACK - _running = -1; // HACK - warning("TODO: GameConversation::setHeroTrigger"); + // TODO: Still stuff to do + warning("TODO GameConversations::get"); } -void GameConversation::setInterlocutorTrigger(int val) { - warning("TODO: GameConversation::setInterlocutorTrigger"); -} - -int* GameConversation::getVariable(int idx) { - warning("TODO: GameConversation::getVariable"); - return nullptr; -} - -void GameConversation::hold() { - warning("TODO: GameConversation::hold"); -} - -void GameConversation::release() { - warning("TODO: GameConversation::release"); -} - -void GameConversation::reset(int id) { - warning("TODO: GameConversation::reset"); -} - -void GameConversation::abortConv() { - warning("TODO: GameConversation::abort"); -} } // End of namespace MADS diff --git a/engines/mads/conversations.h b/engines/mads/conversations.h index c4bf06e6dc..2a2a6258df 100644 --- a/engines/mads/conversations.h +++ b/engines/mads/conversations.h @@ -23,24 +23,110 @@ #ifndef MADS_CONVERSATIONS_H #define MADS_CONVERSATIONS_H +#include "common/scummsys.h" +#include "common/array.h" +#include "common/str-array.h" + namespace MADS { +#define MAX_CONVERSATIONS 5 +#define MAX_SPEAKERS 5 + +enum DialogCommands { + cmdNodeEnd = 0, + // + cmdHide = 2, + cmdUnhide = 3, + cmdMessage = 4, + // + // + cmdGoto = 7, + // + cmdAssign = 9, + cmdDialogEnd = 255 +}; + +struct ConvDialog { + int16 _textLineIndex; // 0-based + int16 _speechIndex; // 1-based + uint16 _nodeOffset; // offset in section 6 + uint16 _nodeSize; // size in section 6 +}; + +struct ConvNode { + uint16 _index; + uint16 _dialogCount; + int16 _unk1; + int16 _unk2; + int16 _unk3; + + Common::Array<ConvDialog> _dialogs; +}; + +struct ConversationData { + uint16 _nodeCount; // conversation nodes, each one containing several dialog options and messages + uint16 _dialogCount; // messages (non-selectable) + texts (selectable) + uint16 _messageCount; // messages (non-selectable) + uint16 _textLineCount; + uint16 _unk2; + uint16 _importCount; + uint16 _speakerCount; + int _textSize; + int _commandsSize; + + Common::String _portraits[MAX_SPEAKERS]; + bool _speakerExists[MAX_SPEAKERS]; + Common::String _speechFile; + Common::Array<uint> _messages; + Common::StringArray _textLines; + Common::Array<ConvNode> _convNodes; + + /** + * Load the specified conversation resource file + */ + void load(const Common::String &filename); +}; + +struct ConversationData2 { +}; + +struct ConversationEntry { + int _convId; + ConversationData _data; + ConversationData2 _data2; +}; + class MADSEngine; -class GameConversation { +class GameConversations { private: MADSEngine *_vm; + ConversationEntry _conversations[MAX_CONVERSATIONS]; + + /** + * Returns the record for the specified conversation, if it's loaded + */ + ConversationEntry *getConv(int convId); + /** + * Start a specified conversation slot + */ + void start(); +public: + ConversationEntry *_runningConv; + int _restoreRunning; + bool _playerEnabled; + uint32 _startFrameNumber; public: /** * Constructor */ - GameConversation(MADSEngine *vm); + GameConversations(MADSEngine *vm); /** * Destructor */ - virtual ~GameConversation(); + virtual ~GameConversations(); int* _nextStartNode; int* getVariable(int idx); @@ -56,9 +142,16 @@ public: void release(); void reset(int id); void abortConv(); + + /** + * Returns true if any conversation is currently atcive + */ + bool active() const { return _runningConv != nullptr; } - int _running; - int _restoreRunning; + /** + * Returns the currently active conversation Id + */ + int activeConvId() const { return !active() ? -1 : _runningConv->_convId; } }; } // End of namespace MADS diff --git a/engines/mads/dragonsphere/dragonsphere_scenes1.cpp b/engines/mads/dragonsphere/dragonsphere_scenes1.cpp index 8a89d8ed08..7fdea7137c 100644 --- a/engines/mads/dragonsphere/dragonsphere_scenes1.cpp +++ b/engines/mads/dragonsphere/dragonsphere_scenes1.cpp @@ -1486,7 +1486,7 @@ void Scene104::step() { } void Scene104::actions() { - if (_vm->_gameConv->_running == 1) { + if (_vm->_gameConv->activeConvId() == 1) { handleFinalConversation(); _action._inProgress = false; return; @@ -3341,7 +3341,7 @@ void Scene105::actions() { return; } - if (_vm->_gameConv->_running == 2) { + if (_vm->_gameConv->activeConvId() == 2) { handleConversation(); _action._inProgress = false; return; diff --git a/engines/mads/mads.cpp b/engines/mads/mads.cpp index 0bdf484c9a..963a35c24c 100644 --- a/engines/mads/mads.cpp +++ b/engines/mads/mads.cpp @@ -104,7 +104,7 @@ void MADSEngine::initialize() { _gameConv = nullptr; break; default: - _gameConv = new GameConversation(this); + _gameConv = new GameConversations(this); } loadOptions(); diff --git a/engines/mads/mads.h b/engines/mads/mads.h index 1b0f96a656..eb808de32f 100644 --- a/engines/mads/mads.h +++ b/engines/mads/mads.h @@ -97,7 +97,7 @@ public: EventsManager *_events; Font *_font; Game *_game; - GameConversation * _gameConv; + GameConversations * _gameConv; Palette *_palette; Resources *_resources; ScreenSurface _screen; diff --git a/engines/mads/phantom/game_phantom.cpp b/engines/mads/phantom/game_phantom.cpp index 3ec3052ad5..af9769d529 100644 --- a/engines/mads/phantom/game_phantom.cpp +++ b/engines/mads/phantom/game_phantom.cpp @@ -744,7 +744,7 @@ void GamePhantom::stopWalker() { void GamePhantom::step() { if (_player._visible && !_globals[kStopWalkerDisabled] - && (_player._stepEnabled || (_vm->_gameConv->_running >= 0)) + && (_player._stepEnabled || (_vm->_gameConv->activeConvId() >= 0)) && !_player._moving && (_player._facing == _player._turnToFacing) && (_scene._frameStartTime >= (uint32)_globals[kWalkerTiming])) { if (_player._stopWalkers.empty()) diff --git a/engines/mads/phantom/phantom_scenes1.cpp b/engines/mads/phantom/phantom_scenes1.cpp index c86d2852c7..bfd60daec7 100644 --- a/engines/mads/phantom/phantom_scenes1.cpp +++ b/engines/mads/phantom/phantom_scenes1.cpp @@ -300,9 +300,9 @@ void Scene101::preActions() { } void Scene101::actions() { - if (_vm->_gameConv->_running == 0) + if (_vm->_gameConv->activeConvId() == 0) handleConversation0(); - else if (_vm->_gameConv->_running == 1) + else if (_vm->_gameConv->activeConvId() == 1) handleConversation1(); else if (_action._lookFlag) { if (_globals[kCurrentYear] == 1993) @@ -525,7 +525,7 @@ void Scene101::handleAnimation1() { } if (_startWalkingFl) { - if (_vm->_gameConv->_running == 1) { + if (_vm->_gameConv->activeConvId() == 1) { if (_talkCounter > 13) _chandelierStatus = 1; } else @@ -541,7 +541,7 @@ void Scene101::handleAnimation1() { case 1: _globals[kBrieTalkStatus] = 2; resetFrame = 45; - if (_vm->_gameConv->_running == 1) + if (_vm->_gameConv->activeConvId() == 1) _vm->_gameConv->stop(); _scene->_dynamicHotspots.remove(_brieAnimId); _game._player._stepEnabled = false; @@ -1376,7 +1376,7 @@ void Scene103::actions() { return; } - if (_vm->_gameConv->_running == 12) { + if (_vm->_gameConv->activeConvId() == 12) { process_conv_jacques(); _action._inProgress = false; return; @@ -2678,7 +2678,7 @@ void Scene104::preActions() { } void Scene104::actions() { - if (_vm->_gameConv->_running == 7) { + if (_vm->_gameConv->activeConvId() == 7) { processConversations(); _action._inProgress = false; return; @@ -5076,7 +5076,7 @@ void Scene108::enter() { _globals._animationIndexes[0] = _scene->loadAnimation(formAnimName('c', 1), 1); _anim0ActvFl = true; - if (_vm->_gameConv->_running == 2) { + if (_vm->_gameConv->activeConvId() == 2) { _globals[kWalkerConverse] = _vm->getRandomNumber(1, 4); _charAction = 0; _vm->_gameConv->run(2); @@ -5133,7 +5133,7 @@ void Scene108::step() { } void Scene108::actions() { - if (_vm->_gameConv->_running == 2) { + if (_vm->_gameConv->activeConvId() == 2) { handleCharlesConversation(); _action._inProgress = false; return; @@ -6641,7 +6641,7 @@ void Scene111::step() { } void Scene111::actions() { - if (_vm->_gameConv->_running == 14) { + if (_vm->_gameConv->activeConvId() == 14) { handleListenConversation(); _action._inProgress = false; return; @@ -7081,7 +7081,7 @@ void Scene112::step() { } void Scene112::actions() { - if (_vm->_gameConv->_running == 3) { + if (_vm->_gameConv->activeConvId() == 3) { handleConversation(); _action._inProgress = false; return; @@ -8081,19 +8081,19 @@ void Scene113::step() { } void Scene113::actions() { - if (_vm->_gameConv->_running == 13) { + if (_vm->_gameConv->activeConvId() == 13) { handleLoveConversation(); _action._inProgress = false; return; } - if (_vm->_gameConv->_running == 4) { + if (_vm->_gameConv->activeConvId() == 4) { handleFlorentConversation(); _action._inProgress = false; return; } - if (_vm->_gameConv->_running == 6) { + if (_vm->_gameConv->activeConvId() == 6) { handleDeadConversation(); _action._inProgress = false; return; diff --git a/engines/mads/phantom/phantom_scenes2.cpp b/engines/mads/phantom/phantom_scenes2.cpp index eff0bf8db9..02e2d7c117 100644 --- a/engines/mads/phantom/phantom_scenes2.cpp +++ b/engines/mads/phantom/phantom_scenes2.cpp @@ -156,14 +156,14 @@ void Scene201::step() { if (_anim1ActvFl) handleSellerAnimation(); - if ((_needHoldFl) && (_vm->_gameConv->_running != 16)) { + if ((_needHoldFl) && (_vm->_gameConv->activeConvId() != 16)) { _game._player._stepEnabled = false; _needHoldFl = false; } } void Scene201::actions() { - if (_vm->_gameConv->_running == 16) { + if (_vm->_gameConv->activeConvId() == 16) { handleConversation(); _action._inProgress = false; return; @@ -786,13 +786,13 @@ void Scene202::step() { } void Scene202::actions() { - if (_vm->_gameConv->_running == 17) { + if (_vm->_gameConv->activeConvId() == 17) { handleConversation1(); _action._inProgress = false; return; } - if (_vm->_gameConv->_running == 9) { + if (_vm->_gameConv->activeConvId() == 9) { handleConversation2(); _action._inProgress = false; return; @@ -1725,7 +1725,7 @@ void Scene203::step() { _vm->_sound->command(25); _globals._sequenceIndexes[5] = _scene->_sequences.addStampCycle(_globals._spriteIndexes[5], false, -1); _scene->_sequences.setDepth(_globals._sequenceIndexes[5], 14); - if (_vm->_gameConv->_running != 15) + if (_vm->_gameConv->activeConvId() != 15) _game._player._stepEnabled = true; break; @@ -1735,19 +1735,19 @@ void Scene203::step() { } void Scene203::actions() { - if (_vm->_gameConv->_running == 5) { + if (_vm->_gameConv->activeConvId() == 5) { handleBrieConversation(); _action._inProgress = false; return; } - if (_vm->_gameConv->_running == 8) { + if (_vm->_gameConv->activeConvId() == 8) { handleRichardConversation(); _action._inProgress = false; return; } - if (_vm->_gameConv->_running == 15) { + if (_vm->_gameConv->activeConvId() == 15) { handleRichardAndDaaeConversation(); _action._inProgress = false; return; @@ -3481,7 +3481,7 @@ void Scene204::step() { if (_game._trigger == 85) _scene->_nextSceneId = 250; - if ((_vm->_gameConv->_running != 22) && !_skip1Fl && _endGameFl) { + if ((_vm->_gameConv->activeConvId() != 22) && !_skip1Fl && _endGameFl) { _game._player._stepEnabled = false; _skip1Fl = true; } @@ -3500,7 +3500,7 @@ void Scene204::step() { } void Scene204::actions() { - if (_vm->_gameConv->_running == 22) { + if (_vm->_gameConv->activeConvId() == 22) { handleConversation(); _action._inProgress = false; @@ -4525,19 +4525,19 @@ void Scene205::step() { } void Scene205::actions() { - if (_vm->_gameConv->_running == 18) { + if (_vm->_gameConv->activeConvId() == 18) { handleConversation18(); _action._inProgress = false; return; } - if (_vm->_gameConv->_running == 10) { + if (_vm->_gameConv->activeConvId() == 10) { handleConversation10(); _action._inProgress = false; return; } - if (_vm->_gameConv->_running == 11) { + if (_vm->_gameConv->activeConvId() == 11) { handleConversation11(); _action._inProgress = false; return; diff --git a/engines/mads/phantom/phantom_scenes3.cpp b/engines/mads/phantom/phantom_scenes3.cpp index bb9bcee80c..3527a794b4 100644 --- a/engines/mads/phantom/phantom_scenes3.cpp +++ b/engines/mads/phantom/phantom_scenes3.cpp @@ -1070,7 +1070,7 @@ void Scene304::step() { } void Scene304::actions() { - if (_vm->_gameConv->_running == 23) { + if (_vm->_gameConv->activeConvId() == 23) { handleConversation23(); _action._inProgress = false; return; diff --git a/engines/mads/phantom/phantom_scenes5.cpp b/engines/mads/phantom/phantom_scenes5.cpp index 2daaed9a90..406637eac4 100644 --- a/engines/mads/phantom/phantom_scenes5.cpp +++ b/engines/mads/phantom/phantom_scenes5.cpp @@ -257,7 +257,7 @@ void Scene501::step() { } void Scene501::actions() { - if (_vm->_gameConv->_running == 26) { + if (_vm->_gameConv->activeConvId() == 26) { _action._inProgress = false; return; } @@ -620,7 +620,7 @@ void Scene501::preActions() { break; case 1: - if (_vm->_gameConv->_running >= 0) + if (_vm->_gameConv->activeConvId() >= 0) _scene->_sequences.addTimer(6, 1); else { _game._player._stepEnabled = true; @@ -2263,7 +2263,7 @@ void Scene504::step() { } void Scene504::actions() { - if (_vm->_gameConv->_running == 26) { + if (_vm->_gameConv->activeConvId() == 26) { _action._inProgress = false; return; } @@ -2304,19 +2304,19 @@ void Scene504::actions() { return; } - if (_vm->_gameConv->_running == 19) { + if (_vm->_gameConv->activeConvId() == 19) { handleListenConversation(); _action._inProgress = false; return; } - if (_vm->_gameConv->_running == 27) { + if (_vm->_gameConv->activeConvId() == 27) { handlePlayConversation(); _action._inProgress = false; return; } - if (_vm->_gameConv->_running == 21) { + if (_vm->_gameConv->activeConvId() == 21) { handleFightConversation(); _action._inProgress = false; return; @@ -2360,7 +2360,7 @@ void Scene504::actions() { if (_action.isAction(VERB_WALK_THROUGH, NOUN_RIGHT_DOOR) || _action.isAction(VERB_OPEN, NOUN_RIGHT_DOOR)) { if (_globals[kRightDoorIsOpen504]) { - if (_vm->_gameConv->_running == 26) + if (_vm->_gameConv->activeConvId() == 26) _vm->_gameConv->abortConv(); _scene->_nextSceneId = 505; @@ -2580,7 +2580,7 @@ void Scene504::preActions() { break; case 1: - if (_vm->_gameConv->_running >= 0) + if (_vm->_gameConv->activeConvId() >= 0) _scene->_sequences.addTimer(6, 1); else { _game._player._stepEnabled = true; @@ -3314,7 +3314,7 @@ void Scene505::actions() { return; } - if (_vm->_gameConv->_running == 20) { + if (_vm->_gameConv->activeConvId() == 20) { handleCoffinDialog(); _action._inProgress = false; return; @@ -4077,7 +4077,7 @@ void Scene506::step() { _scene->_nextSceneId = 501; } - if (_ascendingFl && (_vm->_gameConv->_running != 26)) { + if (_ascendingFl && (_vm->_gameConv->activeConvId() != 26)) { _ascendingFl = false; _game._player._stepEnabled = false; } @@ -4205,7 +4205,7 @@ void Scene506::actions() { return; } - if (_vm->_gameConv->_running == 26) { + if (_vm->_gameConv->activeConvId() == 26) { _action._inProgress = false; return; } |