diff options
Diffstat (limited to 'engines/parallaction/exec.h')
-rw-r--r-- | engines/parallaction/exec.h | 16 |
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) |