diff options
-rw-r--r-- | engines/hopkins/globals.cpp | 18 | ||||
-rw-r--r-- | engines/hopkins/talk.cpp | 37 | ||||
-rw-r--r-- | engines/hopkins/talk.h | 7 |
3 files changed, 26 insertions, 36 deletions
diff --git a/engines/hopkins/globals.cpp b/engines/hopkins/globals.cpp index 837aad1313..68ff012076 100644 --- a/engines/hopkins/globals.cpp +++ b/engines/hopkins/globals.cpp @@ -437,22 +437,16 @@ void Globals::loadCache(const Common::String &file) { CACHE_BANQUE[1] = spriteData; int v15 = 60; for (int i = 0; i <= 21; i++) { - int v11 = (int16)READ_LE_UINT16((uint16 *)ptr + v15); - int v4 = (int16)READ_LE_UINT16((uint16 *)ptr + v15 + 1); - int v5 = (int16)READ_LE_UINT16((uint16 *)ptr + v15 + 2); - int v6 = i; - Cache[v6].field14 = (int16)READ_LE_UINT16((uint16 *)ptr + v15 + 4); - Cache[v6]._spriteIndex = v11; - Cache[v6]._x = v4; - Cache[v6]._y = v5; + Cache[i]._spriteIndex = (int16)READ_LE_UINT16((uint16 *)ptr + v15); + Cache[i]._x = (int16)READ_LE_UINT16((uint16 *)ptr + v15 + 1); + Cache[i]._y = (int16)READ_LE_UINT16((uint16 *)ptr + v15 + 2); + Cache[i].field14 = (int16)READ_LE_UINT16((uint16 *)ptr + v15 + 4); if (spriteData == g_PTRNUL) { Cache[i]._useCount = 0; } else { - int v8 = _vm->_objectsManager.getWidth(spriteData, v11); - int v9 = _vm->_objectsManager.getHeight(spriteData, v11); Cache[i]._spriteData = spriteData; - Cache[i]._width = v8; - Cache[i]._height = v9; + Cache[i]._width = _vm->_objectsManager.getWidth(spriteData, Cache[i]._spriteIndex); + Cache[i]._height = _vm->_objectsManager.getHeight(spriteData, Cache[i]._spriteIndex); Cache[i]._useCount = 1; } diff --git a/engines/hopkins/talk.cpp b/engines/hopkins/talk.cpp index a05e42c2a9..74dd0c6b4f 100644 --- a/engines/hopkins/talk.cpp +++ b/engines/hopkins/talk.cpp @@ -39,7 +39,6 @@ TalkManager::TalkManager() { _characterSprite = NULL; _characterAnim = NULL; _characterSize = 0; - STATI = false; _dialogueMesgId1 = _dialogueMesgId2 = _dialogueMesgId3 = _dialogueMesgId4 = 0; _paletteBufferIdx = 0; } @@ -105,9 +104,9 @@ void TalkManager::PARLER_PERSO(const Common::String &filename) { int answer = 0; int dlgAnswer; do { - dlgAnswer = dialogQuestion(); + dlgAnswer = dialogQuestion(false); if (dlgAnswer != _dialogueMesgId4) - answer = dialogAnswer(dlgAnswer); + answer = dialogAnswer(dlgAnswer, false); if (answer == -1) dlgAnswer = _dialogueMesgId4; _vm->_eventsManager.VBL(); @@ -117,7 +116,7 @@ void TalkManager::PARLER_PERSO(const Common::String &filename) { int idx = 1; int answer; do - answer = dialogAnswer(idx++); + answer = dialogAnswer(idx++, false); while (answer != -1); } clearCharacterAnim(); @@ -153,7 +152,6 @@ void TalkManager::PARLER_PERSO(const Common::String &filename) { void TalkManager::PARLER_PERSO2(const Common::String &filename) { // TODO: The original disables the mouse cursor here - STATI = true; bool oldDisableInventFl = _vm->_globals._disableInventFl; _vm->_globals._disableInventFl = true; _characterBuffer = _vm->_fileManager.searchCat(filename, 5); @@ -195,9 +193,9 @@ void TalkManager::PARLER_PERSO2(const Common::String &filename) { if (!_vm->_globals._introSpeechOffFl) { int answer; do { - answer = dialogQuestion(); + answer = dialogQuestion(true); if (answer != _dialogueMesgId4) { - if (dialogAnswer(answer) == -1) + if (dialogAnswer(answer, true) == -1) answer = _dialogueMesgId4; } } while (answer != _dialogueMesgId4); @@ -207,7 +205,7 @@ void TalkManager::PARLER_PERSO2(const Common::String &filename) { int idx = 1; int answer; do - answer = dialogAnswer(idx++); + answer = dialogAnswer(idx++, true); while (answer != -1); } @@ -219,15 +217,14 @@ void TalkManager::PARLER_PERSO2(const Common::String &filename) { _vm->_graphicsManager.setPaletteVGA256(_vm->_graphicsManager._palette); // TODO: The original reenables the mouse cursor here _vm->_globals._disableInventFl = oldDisableInventFl; - STATI = false; } void TalkManager::getStringFromBuffer(int srcStart, Common::String &dest, const char *srcData) { dest = Common::String(srcData + srcStart); } -int TalkManager::dialogQuestion() { - if (STATI) { +int TalkManager::dialogQuestion(bool animatedFl) { + if (animatedFl) { uint16 *bufPtr = (uint16 *)_characterBuffer + 48; int curVal = (int16)READ_LE_UINT16(bufPtr); if (curVal != 0) @@ -297,7 +294,7 @@ int TalkManager::dialogQuestion() { _vm->_fontManager.hideText(7); _vm->_fontManager.hideText(8); - if (STATI) { + if (animatedFl) { uint16 *bufPtr = (uint16 *)_characterBuffer + 48; int curVal = (int16)READ_LE_UINT16(bufPtr); @@ -327,7 +324,7 @@ int TalkManager::dialogQuestion() { return retVal; } -int TalkManager::dialogAnswer(int idx) { +int TalkManager::dialogAnswer(int idx, bool animatedFl) { int charIdx; byte *charBuf; for (charBuf = _characterBuffer + 110, charIdx = 0; (int16)READ_LE_UINT16(charBuf) != idx; charBuf += 20) { @@ -351,7 +348,7 @@ int TalkManager::dialogAnswer(int idx) { if (!v6) v6 = 10; - if (STATI) { + if (animatedFl) { uint16 *bufPtr = (uint16 *)_characterBuffer + 43; int curVal = (int16)READ_LE_UINT16(bufPtr); if (curVal) @@ -401,7 +398,7 @@ int TalkManager::dialogAnswer(int idx) { if (!_vm->_soundManager._textOffFl) _vm->_fontManager.hideText(9); - if (STATI) { + if (animatedFl) { uint16 *bufPtr = (uint16 *)_characterBuffer + 43; int curVal = (int16)READ_LE_UINT16(bufPtr); if (curVal) @@ -876,16 +873,16 @@ void TalkManager::REPONSE(int zone, int verb) { return; } -void TalkManager::REPONSE2(int a1, int a2) { +void TalkManager::REPONSE2(int zone, int a2) { int indx = 0; if (a2 != 5 || _vm->_globals._saveData->_data[svField3] != 4) return; - if (a1 == 22 || a1 == 23) { + if (zone == 22 || zone == 23) { _vm->_objectsManager.setFlipSprite(0, false); _vm->_objectsManager.setSpriteIndex(0, 62); _vm->_objectsManager.SPACTION(_vm->_objectsManager._forestSprite, "2,3,4,5,6,7,8,9,10,11,12,-1,", 0, 0, 4, false); - if (a1 == 22) { + if (zone == 22) { _vm->_objectsManager.lockAnimX(6, _vm->_objectsManager.getBobPosX(3)); _vm->_objectsManager.lockAnimX(8, _vm->_objectsManager.getBobPosX(3)); } else { // a1 == 23 @@ -929,11 +926,11 @@ void TalkManager::REPONSE2(int a1, int a2) { _vm->_globals._saveData->_data[indx] = 2; _vm->_objectsManager.disableZone(22); _vm->_objectsManager.disableZone(23); - } else if (a1 == 20 || a1 == 21) { + } else if (zone == 20 || zone == 21) { _vm->_objectsManager.setFlipSprite(0, true); _vm->_objectsManager.setSpriteIndex(0, 62); _vm->_objectsManager.SPACTION(_vm->_objectsManager._forestSprite, "2,3,4,5,6,7,8,9,10,11,12,-1,", 0, 0, 4, true); - if (a1 == 20) { + if (zone == 20) { _vm->_objectsManager.lockAnimX(5, _vm->_objectsManager.getBobPosX(1)); _vm->_objectsManager.lockAnimX(7, _vm->_objectsManager.getBobPosX(1)); } else { // a1 == 21 diff --git a/engines/hopkins/talk.h b/engines/hopkins/talk.h index 05d5d97bcb..fad626ee54 100644 --- a/engines/hopkins/talk.h +++ b/engines/hopkins/talk.h @@ -39,14 +39,13 @@ private: byte *_characterBuffer; byte *_characterPalette; size_t _characterSize; - bool STATI; int _dialogueMesgId1, _dialogueMesgId2; int _dialogueMesgId3, _dialogueMesgId4; int _paletteBufferIdx; void getStringFromBuffer(int srcStart, Common::String &dest, const char *srcData); - int dialogQuestion(); - int dialogAnswer(int idx); + int dialogQuestion(bool animatedFl); + int dialogAnswer(int idx, bool animatedFl); void searchCharacterPalette(int startIdx, bool dark); void dialogWait(); void dialogTalk(); @@ -70,7 +69,7 @@ public: void PARLER_PERSO2(const Common::String &filename); void PARLER_PERSO(const Common::String &filename); void REPONSE(int zone, int verb); - void REPONSE2(int a1, int a2); + void REPONSE2(int zone, int a2); void OBJET_VIVANT(const Common::String &a2); }; |