aboutsummaryrefslogtreecommitdiff
path: root/saga/sthread.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2005-01-17 20:17:06 +0000
committerEugene Sandulenko2005-01-17 20:17:06 +0000
commitdab894fdd49eef7a34f9f9f1c17c7c22741a1add (patch)
tree9f446ff30b1398626cb1df7b03f2f9573c08c685 /saga/sthread.cpp
parent4cacb8d20caeb7264098845fef1329b61eec5bf6 (diff)
downloadscummvm-rg350-dab894fdd49eef7a34f9f9f1c17c7c22741a1add.tar.gz
scummvm-rg350-dab894fdd49eef7a34f9f9f1c17c7c22741a1add.tar.bz2
scummvm-rg350-dab894fdd49eef7a34f9f9f1c17c7c22741a1add.zip
First batch of converse implementation in scripts. To see it type
'scene_change 33' in debugger. svn-id: r16588
Diffstat (limited to 'saga/sthread.cpp')
-rw-r--r--saga/sthread.cpp42
1 files changed, 27 insertions, 15 deletions
diff --git a/saga/sthread.cpp b/saga/sthread.cpp
index 1222e19439..cdd679ab3e 100644
--- a/saga/sthread.cpp
+++ b/saga/sthread.cpp
@@ -771,28 +771,40 @@ void Script::runThread(ScriptThread *thread, int instr_limit) {
}
}
break;
- // (DLGS): Initialize dialogue interface
- case 0x54:
- warning("dialog_begin opcode: stub");
+
+ case opDialogBegin: // (DLGS): Initialize dialogue interface
+ if (_conversingThread) {
+ thread->wait(kWaitTypeDialogBegin);
+ return;
+ }
+ _conversingThread = thread;
+ _vm->_interface->converseClear();
break;
- // (DLGX): Run dialogue interface
- case 0x55:
- if (0) {
+
+ case opDialogEnd: // (DLGX): Run dialogue interface
+ if (thread == _conversingThread) {
_vm->_interface->activate();
_vm->_interface->setMode(kPanelConverse);
+ thread->wait(kWaitTypeDialogEnd);
+ return;
}
- warning("dialog_end opcode: stub");
break;
- // (DLGO): Add a dialogue option to interface
- case 0x56:
+
+ case opReply: // (DLGO): Add a dialogue option to interface
{
- ScriptDataWord param3 = 0;
- param1 = scriptS.readByte();
- param2 = scriptS.readByte();
- if (param2 & 1) {
- param3 = scriptS.readUint16LE();
+ ScriptDataWord n = 0;
+ const char *str;
+ int replyNum = scriptS.readByte();
+ int flags = scriptS.readByte();
+
+ if (flags & kReplyOnce) {
+ n = scriptS.readUint16LE();
+ // TODO:
}
- debug(2, "DLGO | %02X %02X %04X", param1, param2, param3);
+
+ str = getScriptString(thread->pop());
+ if (_vm->_interface->converseAddText(str, replyNum, flags, n))
+ warning("Error adding ConverseText (%s, %d, %d, %d)", str, replyNum, flags, n);
}
break;
case 0x57: // animate