diff options
author | Paul Gilbert | 2016-07-28 22:36:29 -0400 |
---|---|---|
committer | Paul Gilbert | 2016-07-28 22:36:29 -0400 |
commit | c08ad39a9442d6f15bacb33b34597338121fa5b4 (patch) | |
tree | 31daf76f087d9c2eafbd44d84f6403d611cc8f53 | |
parent | c7bd63d8818bb064be19957c32a1ee4abe7c9515 (diff) | |
download | scummvm-rg350-c08ad39a9442d6f15bacb33b34597338121fa5b4.tar.gz scummvm-rg350-c08ad39a9442d6f15bacb33b34597338121fa5b4.tar.bz2 scummvm-rg350-c08ad39a9442d6f15bacb33b34597338121fa5b4.zip |
TITANIC: Added DeskbotScript setFlags17
-rw-r--r-- | engines/titanic/true_talk/barbot_script.cpp | 19 | ||||
-rw-r--r-- | engines/titanic/true_talk/deskbot_script.cpp | 20 |
2 files changed, 29 insertions, 10 deletions
diff --git a/engines/titanic/true_talk/barbot_script.cpp b/engines/titanic/true_talk/barbot_script.cpp index f77b0b1b8a..1c652faf11 100644 --- a/engines/titanic/true_talk/barbot_script.cpp +++ b/engines/titanic/true_talk/barbot_script.cpp @@ -974,22 +974,23 @@ int BarbotScript::updateState(uint oldId, uint newId, int index) { return 251701 + _field7C ? 3 : 0; } - for (const TTupdateState3 *us = &_states[0]; us->_newId; ++us) { - if (us->_newId == newId) { - if ((us->_dialBits & 1) && !getDialRegion(0)) + for (uint idx = 0; idx < _states.size(); ++idx) { + const TTupdateState3 &us = _states[idx]; + if (us._newId == newId) { + if ((us._dialBits & 1) && !getDialRegion(0)) continue; - if ((us->_dialBits & 2) && getDialRegion(0)) + if ((us._dialBits & 2) && getDialRegion(0)) continue; - if ((us->_dialBits & 4) && !getDialRegion(1)) + if ((us._dialBits & 4) && !getDialRegion(1)) continue; - if ((us->_dialBits & 8) && getDialRegion(1)) + if ((us._dialBits & 8) && getDialRegion(1)) continue; - if ((us->_dialBits & 0x10) && !getDialRegion(2)) + if ((us._dialBits & 0x10) && !getDialRegion(2)) continue; - if ((us->_dialBits & 0x20) && getDialRegion(2)) + if ((us._dialBits & 0x20) && getDialRegion(2)) continue; - setState(us->_newValue); + setState(us._newValue); break; } } diff --git a/engines/titanic/true_talk/deskbot_script.cpp b/engines/titanic/true_talk/deskbot_script.cpp index 219ac74a24..1e3eaae26a 100644 --- a/engines/titanic/true_talk/deskbot_script.cpp +++ b/engines/titanic/true_talk/deskbot_script.cpp @@ -397,7 +397,25 @@ int DeskbotScript::getStateDialogueId() const { } void DeskbotScript::setFlags17(int newId, int index) { - // TODO + int newValue = getValue(17); + + for (uint idx = 0; idx < _states.size(); ++idx) { + const TTupdateState3 &us = _states[idx]; + if (newId == (idx == 0 ? 0 : us._newId)) { + uint bits = us._dialBits; + + if (!bits + || (index == 1 && (bits & 1) && (bits & 4)) + || (index == 0 && (bits & 2) && (bits & 4)) + || (index == 3 && (bits & 1) && (bits & 8)) + || (index == 2 && (bits & 2) && (bits & 8))) { + newValue = us._newValue; + break; + } + } + } + + CTrueTalkManager::setFlags(17, newValue); } } // End of namespace Titanic |