aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction/exec.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/parallaction/exec.h')
-rw-r--r--engines/parallaction/exec.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/engines/parallaction/exec.h b/engines/parallaction/exec.h
index 9ac343dc62..03526617c6 100644
--- a/engines/parallaction/exec.h
+++ b/engines/parallaction/exec.h
@@ -47,14 +47,30 @@ protected:
struct ParallactionStruct1 {
CommandPtr cmd;
ZonePtr z;
+ bool suspend;
} _ctxt;
OpcodeSet _opcodes;
+ struct SuspendedContext {
+ bool valid;
+ CommandList::iterator first;
+ CommandList::iterator last;
+ ZonePtr zone;
+ } _suspendedCtxt;
+
+ ZonePtr _execZone;
+ void runList(CommandList::iterator first, CommandList::iterator last);
+ void createSuspendList(CommandList::iterator first, CommandList::iterator last);
+ void cleanSuspendedList();
+
public:
virtual void init() = 0;
virtual void run(CommandList &list, ZonePtr z = nullZonePtr);
+ void runSuspended();
+
CommandExec() {
+ _suspendedCtxt.valid = false;
}
virtual ~CommandExec() {
for (Common::Array<const Opcode*>::iterator i = _opcodes.begin(); i != _opcodes.end(); ++i)