aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra
diff options
context:
space:
mode:
authorFlorian Kagerer2008-03-16 17:16:17 +0000
committerFlorian Kagerer2008-03-16 17:16:17 +0000
commit04a2ac14854c302c88b9f17cb5c9dbacf1fa6a89 (patch)
treea5746d8a04369eecee96688ffa32a66efca15282 /engines/kyra
parent79cc924d0e82fc6da46d0d776ed5949c105af453 (diff)
downloadscummvm-rg350-04a2ac14854c302c88b9f17cb5c9dbacf1fa6a89.tar.gz
scummvm-rg350-04a2ac14854c302c88b9f17cb5c9dbacf1fa6a89.tar.bz2
scummvm-rg350-04a2ac14854c302c88b9f17cb5c9dbacf1fa6a89.zip
- implement zanthIdleChat()
- bug fix for zanthRandomChat() svn-id: r31147
Diffstat (limited to 'engines/kyra')
-rw-r--r--engines/kyra/kyra_v2.cpp12
-rw-r--r--engines/kyra/kyra_v2.h3
-rw-r--r--engines/kyra/scene_v2.cpp2
-rw-r--r--engines/kyra/text_v2.cpp38
4 files changed, 40 insertions, 15 deletions
diff --git a/engines/kyra/kyra_v2.cpp b/engines/kyra/kyra_v2.cpp
index 84c2cd1029..69473257bb 100644
--- a/engines/kyra/kyra_v2.cpp
+++ b/engines/kyra/kyra_v2.cpp
@@ -1593,14 +1593,14 @@ void KyraEngine_v2::showIdleAnim() {
0x04, 0x06, 0x07, 0x08, 0x04, 0x09, 0x0A, 0x0B, 0xFF, 0x00
};
- if (queryGameFlag(0x159))
+ if (queryGameFlag(0x159 && _flags.isTalkie))
return;
static bool scriptAnimation = false;
- //if (!scriptAnimation) {
- // scriptAnimation = true;
- // sub_2715D();
- //} else {
+ if (!scriptAnimation && _flags.isTalkie) {
+ scriptAnimation = true;
+ zanthIdleChat();
+ } else {
scriptAnimation = false;
if (_loadedZTable > 8)
return;
@@ -1619,7 +1619,7 @@ void KyraEngine_v2::showIdleAnim() {
runIdleScript(script);
_lastIdleScript = script;
- //}
+ }
}
void KyraEngine_v2::runIdleScript(int script) {
diff --git a/engines/kyra/kyra_v2.h b/engines/kyra/kyra_v2.h
index f4084be06d..f5d5ce1c56 100644
--- a/engines/kyra/kyra_v2.h
+++ b/engines/kyra/kyra_v2.h
@@ -799,6 +799,7 @@ protected:
void zanthSceneStartupChat();
void zanthRandomChat();
+ void zanthIdleChat();
void updateDlgBuffer();
void loadDlgHeader(int &csEntry, int &vocH, int &scIndex1, int &scIndex2);
void processDialogue(int dlgOffset, int vocH = 0, int csEntry = 0);
@@ -1095,7 +1096,7 @@ protected:
uint8 *_unkBuf500Bytes;
uint8 *_unkBuf200kByte;
- bool _unkFlag1;
+ bool _chatAltFlag;
int _unk3, _unk4, _unk5;
bool _unkSceneScreenFlag1;
bool _unkHandleSceneChangeFlag;
diff --git a/engines/kyra/scene_v2.cpp b/engines/kyra/scene_v2.cpp
index eda2122077..83d0f28aef 100644
--- a/engines/kyra/scene_v2.cpp
+++ b/engines/kyra/scene_v2.cpp
@@ -86,7 +86,7 @@ void KyraEngine_v2::enterNewScene(uint16 newScene, int facing, int unk1, int unk
_sound->beginFadeOut();
}
- _unkFlag1 = false;
+ _chatAltFlag = false;
if (!unk3) {
_scriptInterpreter->initScript(&_sceneScriptState, &_sceneScriptData);
diff --git a/engines/kyra/text_v2.cpp b/engines/kyra/text_v2.cpp
index adcaacbd15..2aaa47d25f 100644
--- a/engines/kyra/text_v2.cpp
+++ b/engines/kyra/text_v2.cpp
@@ -394,7 +394,8 @@ void KyraEngine_v2::startDialogue(int dlgIndex) {
}
void KyraEngine_v2::zanthSceneStartupChat() {
- int tableIndex = _mainCharacter.sceneId - READ_LE_UINT16(&_ingameTalkObjIndex[5 + _newChapterFile]);
+ int lowest = _flags.isTalkie ? 6 : 5;
+ int tableIndex = _mainCharacter.sceneId - READ_LE_UINT16(&_ingameTalkObjIndex[lowest + _newChapterFile]);
if (queryGameFlag(0x159) || _newSceneDlgState[tableIndex])
return;
@@ -410,7 +411,8 @@ void KyraEngine_v2::zanthSceneStartupChat() {
}
void KyraEngine_v2::zanthRandomChat() {
- int tableIndex = _mainCharacter.sceneId - READ_LE_UINT16(&_ingameTalkObjIndex[5 + _newChapterFile]);
+ int lowest = _flags.isTalkie ? 6 : 5;
+ int tableIndex = (_mainCharacter.sceneId - READ_LE_UINT16(&_ingameTalkObjIndex[lowest + _newChapterFile])) << 2;
if (queryGameFlag(0x164))
return;
@@ -418,14 +420,36 @@ void KyraEngine_v2::zanthRandomChat() {
updateDlgBuffer();
loadDlgHeader(csEntry, vocH, scIndex1, unused);
- if (_unkFlag1) {
- _unkFlag1 = 0;
+ if (_chatAltFlag) {
+ _chatAltFlag = 0;
tableIndex += 2;
} else {
- _unkFlag1 = 1;
+ _chatAltFlag = 1;
}
- uint8 bufferIndex = 8 + scIndex1 * 6 + tableIndex * 2;
+ uint8 bufferIndex = 8 + scIndex1 * 6 + tableIndex;
+ int offs = READ_LE_UINT16(_dlgBuffer + bufferIndex);
+ processDialogue(offs, vocH, csEntry);
+}
+
+void KyraEngine_v2::zanthIdleChat() {
+ int lowest = _flags.isTalkie ? 6 : 5;
+ int tableIndex = (_mainCharacter.sceneId - READ_LE_UINT16(&_ingameTalkObjIndex[lowest + _newChapterFile])) << 2;
+ if (queryGameFlag(0x164))
+ return;
+
+ int csEntry, vocH, scIndex1, unused;
+ updateDlgBuffer();
+ loadDlgHeader(csEntry, vocH, scIndex1, unused);
+
+ if (_chatAltFlag) {
+ _chatAltFlag = 0;
+ tableIndex += 2;
+ } else {
+ _chatAltFlag = 1;
+ }
+
+ uint8 bufferIndex = 8 + scIndex1 * 6 + tableIndex;
int offs = READ_LE_UINT16(_dlgBuffer + bufferIndex);
processDialogue(offs, vocH, csEntry);
}
@@ -700,7 +724,7 @@ void KyraEngine_v2::setNewDlgIndex(int dlgIndex) {
memset(_newSceneDlgState, 0, 32);
for (int i = 0; i < 19; i++)
memset(_conversationState[i], -1, 14);
- _unkFlag1 = false;
+ _chatAltFlag = false;
_mainCharacter.dlgIndex = dlgIndex;
}