diff options
-rw-r--r-- | engines/zvision/scr_file_handling.cpp | 6 | ||||
-rw-r--r-- | engines/zvision/script_manager.h | 24 |
2 files changed, 22 insertions, 8 deletions
diff --git a/engines/zvision/scr_file_handling.cpp b/engines/zvision/scr_file_handling.cpp index 6bf73733e5..2371c350f7 100644 --- a/engines/zvision/scr_file_handling.cpp +++ b/engines/zvision/scr_file_handling.cpp @@ -25,6 +25,7 @@ #include "zvision/script_manager.h" #include "zvision/utility.h" #include "zvision/puzzle.h" +#include "zvision/actions.h" #include "common/textconsole.h" #include "common/file.h" @@ -53,14 +54,15 @@ void ScriptManager::parseScrFile(Common::String fileName) { sscanf(line.c_str(),"puzzle:%u",&(puzzle.key)); parsePuzzle(puzzle, file); - _puzzles.push_back(puzzle); + _activePuzzles.push_back(puzzle); } else if (line.matchString("control:*", true)) { Control control; char controlType[20]; sscanf(line.c_str(),"control:%u %s",&(control.id), controlType); parseControl(control, file); - _controls.push_back(control); + /** Holds the currently active puzzles */ + _activeControls.push_back(control); } } } diff --git a/engines/zvision/script_manager.h b/engines/zvision/script_manager.h index f02073b4c6..5be4c171e0 100644 --- a/engines/zvision/script_manager.h +++ b/engines/zvision/script_manager.h @@ -26,21 +26,33 @@ #include "common/str.h" #include "common/stream.h" #include "common/hashmap.h" +#include "common/stack.h" #include "zvision/puzzle.h" #include "zvision/control.h" -#include "zvision/actions.h" namespace ZVision { +class ActionNode; + class ScriptManager { private: - /** Holds the global state variables. Optimize for fast random access */ + /** + * Holds the global state variable. Do NOT directly modify this. Use the accessors and + * mutators getStateValue() and setStateValue(). This ensures that Puzzles that reference a + * particular state key are checked after the key is modified. + */ Common::HashMap<uint32, byte> _globalState; - /** Holds the currently active puzzles. Optimize for fast iteration */ - Common::List<Puzzle> _puzzles; - /** Holds the currently active controls. Optimize for fast iteration */ - Common::List<Control> _controls; + /** Holds the currently active ActionNodes */ + Common::List<ActionNode *> _activeNodes; + /** References _globalState keys to Puzzles */ + Common::HashMap<uint32, Common::Array<Puzzle *>> _referenceTable; + /** Holds the Puzzles that should be checked this frame */ + Common::Stack<Puzzle *> _puzzlesToCheck; + /** Holds the currently active puzzles */ + Common::List<Puzzle> _activePuzzles; + /** Holds the currently active controls */ + Common::List<Control> _activeControls; public: |