aboutsummaryrefslogtreecommitdiff
path: root/engines/agos/script.cpp
diff options
context:
space:
mode:
authorChristopher Page2008-05-20 21:40:53 +0000
committerChristopher Page2008-05-20 21:40:53 +0000
commitca76ef4e1fa2fc9ebe0daaa2b3b6e61bed87ea14 (patch)
treed78808dec0a17a7316781926ac761d5055a51533 /engines/agos/script.cpp
parent5e592d4e4aa7eb9929a9bbf1283a0382d890de84 (diff)
downloadscummvm-rg350-ca76ef4e1fa2fc9ebe0daaa2b3b6e61bed87ea14.tar.gz
scummvm-rg350-ca76ef4e1fa2fc9ebe0daaa2b3b6e61bed87ea14.tar.bz2
scummvm-rg350-ca76ef4e1fa2fc9ebe0daaa2b3b6e61bed87ea14.zip
AGOS Engine: Began implementation for a new quit event which will cleanly return to the launcher. This replaces the old shutdown() method within delay()
svn-id: r32203
Diffstat (limited to 'engines/agos/script.cpp')
-rw-r--r--engines/agos/script.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/engines/agos/script.cpp b/engines/agos/script.cpp
index 44fbb4e9e0..6758aec511 100644
--- a/engines/agos/script.cpp
+++ b/engines/agos/script.cpp
@@ -410,7 +410,7 @@ void AGOSEngine::o_msg() {
void AGOSEngine::o_end() {
// 68: exit interpreter
- shutdown();
+ _quit = true;
}
void AGOSEngine::o_done() {
@@ -965,6 +965,9 @@ void AGOSEngine::writeVariable(uint16 variable, uint16 contents) {
int AGOSEngine::runScript() {
bool flag;
+ if (_quit)
+ return 1;
+
do {
if (_continousMainScript)
dumpOpcode(_codePtr);
@@ -1007,7 +1010,7 @@ int AGOSEngine::runScript() {
error("Invalid opcode '%d' encountered", _opcode);
executeOpcode(_opcode);
- } while (getScriptCondition() != flag && !getScriptReturn());
+ } while (getScriptCondition() != flag && !getScriptReturn() && !_quit);
return getScriptReturn();
}
@@ -1063,7 +1066,7 @@ void AGOSEngine::waitForSync(uint a) {
_exitCutscene = false;
_rightButtonDown = false;
- while (_vgaWaitFor != 0) {
+ while (_vgaWaitFor != 0 && !_quit) {
if (_rightButtonDown) {
if (_vgaWaitFor == 200 && (getGameType() == GType_FF || !getBitFlag(14))) {
skipSpeech();