aboutsummaryrefslogtreecommitdiff
path: root/engines/zvision/scriptManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/zvision/scriptManager.h')
-rw-r--r--engines/zvision/scriptManager.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/engines/zvision/scriptManager.h b/engines/zvision/scriptManager.h
index a6c9f2b57c..7f6cc2547a 100644
--- a/engines/zvision/scriptManager.h
+++ b/engines/zvision/scriptManager.h
@@ -23,8 +23,13 @@
#ifndef ZVISION_SCRIPT_MANAGER_H
#define ZVISION_SCRIPT_MANAGER_H
+#include "common/str.h"
+#include "common/stream.h"
#include "common/hashmap.h"
+#include "zvision/puzzle.h"
+#include "zvision/control.h"
+
namespace ZVision {
class ScriptManager {
@@ -34,6 +39,63 @@ public:
private:
Common::HashMap<uint32, byte> _globalState;
+
+ /**
+ * Parses a script file into triggers and events
+ *
+ * @param fileName Name of the .scr file
+ */
+ void parseScrFile(Common::String fileName);
+
+ /**
+ * Helper method for parseScrFile. Parses the stream into a Puzzle object
+ *
+ * @param puzzle The object to store what is parsed
+ * @param stream Scr file stream
+ */
+ void parsePuzzle(Puzzle *puzzle, Common::SeekableReadStream &stream);
+
+ /**
+ * Helper method for parsePuzzle. Parses the stream into a Criteria object
+ *
+ * @param stream Scr file stream
+ * @return Created Criteria object
+ */
+ Criteria parseCriteria(Common::SeekableReadStream &stream) const;
+
+ /**
+ * Helper method for parsePuzzle. Parses the stream into a Results object
+ *
+ * @param stream Scr file stream
+ * @return Created Results object
+ */
+ Result parseResult(Common::SeekableReadStream &stream) const;
+
+ /**
+ * Helper method for parseResults. Parses a number of strings into Object types.
+ *
+ * @param result Results object to store the arguments in
+ * @param types The type of the each of the arguments. IE. BOOL, UINT32, etc.
+ * @param numberOfArgs The number of arguments. This has to equal the length of 'types' AND the number of optional arguments passed.
+ * @param String arguments wanting to be parsed
+ */
+ void parseResultArguments(Result &result, const ObjectType *types, int numberOfArgs, ...) const;
+
+ /**
+ * Helper method for parsePuzzle. Parses the stream into a bitwise or of the StateFlags enum
+ *
+ * @param stream Scr file stream
+ * @return Bitwise or of all the flags set within the puzzle
+ */
+ byte parseFlags(Common::SeekableReadStream &stream) const;
+
+ /**
+ * Helper method for parseScrFile. Parses the stream into a Control object
+ *
+ * @param control The object to store what is parsed
+ * @param stream Scr file stream
+ */
+ void parseControl(Control *control, Common::SeekableReadStream &stream);
};