aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/myst_scripts.cpp
diff options
context:
space:
mode:
authorBastien Bouclet2017-07-09 14:22:18 +0200
committerBastien Bouclet2017-07-22 20:38:56 +0200
commit8f59348ec33ec7c4357b639e810ff131ab6461e1 (patch)
tree80a5a4c4f6fe9131c18225e8b65cff7e46c44fbf /engines/mohawk/myst_scripts.cpp
parentee9328323b7f6fc9796df51d88ed76e3a7ca67dd (diff)
downloadscummvm-rg350-8f59348ec33ec7c4357b639e810ff131ab6461e1.tar.gz
scummvm-rg350-8f59348ec33ec7c4357b639e810ff131ab6461e1.tar.bz2
scummvm-rg350-8f59348ec33ec7c4357b639e810ff131ab6461e1.zip
MOHAWK: Myst: Start reworking mainloop detection
Diffstat (limited to 'engines/mohawk/myst_scripts.cpp')
-rw-r--r--engines/mohawk/myst_scripts.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/engines/mohawk/myst_scripts.cpp b/engines/mohawk/myst_scripts.cpp
index 267d644b65..34806506c4 100644
--- a/engines/mohawk/myst_scripts.cpp
+++ b/engines/mohawk/myst_scripts.cpp
@@ -85,6 +85,7 @@ MystScriptParser::MystScriptParser(MohawkEngine_Myst *vm) :
_savedCardId = 0;
_savedCursorId = 0;
_tempVar = 0;
+ _scriptNestingLevel = 0;
}
MystScriptParser::~MystScriptParser() {
@@ -160,6 +161,7 @@ void MystScriptParser::runScript(MystScript script, MystArea *invokingResource)
// Scripted drawing takes more time to simulate older hardware
// This way opcodes can't overwrite what the previous ones drew too quickly
_vm->_gfx->enableDrawingTimeSimulation(true);
+ _scriptNestingLevel++;
for (uint16 i = 0; i < script->size(); i++) {
MystScriptEntry &entry = (*script)[i];
@@ -173,12 +175,14 @@ void MystScriptParser::runScript(MystScript script, MystArea *invokingResource)
runOpcode(entry.opcode, entry.var, entry.argc, entry.argv);
}
+ _scriptNestingLevel--;
_vm->_gfx->enableDrawingTimeSimulation(false);
}
void MystScriptParser::runOpcode(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
- bool ranOpcode = false;
+ _scriptNestingLevel++;
+ bool ranOpcode = false;
for (uint16 i = 0; i < _opcodes.size(); i++)
if (_opcodes[i]->op == op) {
(this->*(_opcodes[i]->proc)) (op, var, argc, argv);
@@ -188,6 +192,12 @@ void MystScriptParser::runOpcode(uint16 op, uint16 var, uint16 argc, uint16 *arg
if (!ranOpcode)
warning("Trying to run invalid opcode %d", op);
+
+ _scriptNestingLevel--;
+}
+
+bool MystScriptParser::isScriptRunning() const {
+ return _scriptNestingLevel > 0;
}
const Common::String MystScriptParser::getOpcodeDesc(uint16 op) {