From 3822de2aec0d41df7c2beeb5a1269577e9c3df84 Mon Sep 17 00:00:00 2001 From: richiesams Date: Wed, 3 Jul 2013 18:24:06 -0500 Subject: ZVISION: Change Puzzle::resultActions to a List of pointers instead of ResultAction objects ResultAction is abstract, therefore, it can't be directly stored in the list --- engines/zvision/puzzle.h | 3 ++- engines/zvision/scr_file_handling.cpp | 8 ++++---- engines/zvision/script_manager.h | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/engines/zvision/puzzle.h b/engines/zvision/puzzle.h index 75d3dc0826..fd9c61e8bc 100644 --- a/engines/zvision/puzzle.h +++ b/engines/zvision/puzzle.h @@ -61,7 +61,8 @@ enum StateFlags : byte { struct Puzzle { uint32 key; Common::List criteriaList; - Common::List resultActions; + // This has to be list of pointers because ResultAction is abstract + Common::List resultActions; byte flags; }; diff --git a/engines/zvision/scr_file_handling.cpp b/engines/zvision/scr_file_handling.cpp index 3171492717..eb867fa0a2 100644 --- a/engines/zvision/scr_file_handling.cpp +++ b/engines/zvision/scr_file_handling.cpp @@ -126,7 +126,7 @@ Criteria ScriptManager::parseCriteria(Common::SeekableReadStream &stream) const return criteria; } -void ScriptManager::parseResult(Common::SeekableReadStream &stream, Common::List &actionList) const { +void ScriptManager::parseResult(Common::SeekableReadStream &stream, Common::List &actionList) const { // Loop until we find the closing brace Common::String line = stream.readLine(); trimCommentsAndWhiteSpace(line); @@ -135,11 +135,11 @@ void ScriptManager::parseResult(Common::SeekableReadStream &stream, Common::List while (!line.contains('}')) { // Parse for the action type if (line.matchString("*:add*", true)) { - actionList.push_back(ActionAdd(line)); + actionList.push_back(new ActionAdd(line)); } else if (line.matchString("*:animplay*", true)) { - actionList.push_back(ActionPlayAnimation(line)); + actionList.push_back(new ActionPlayAnimation(line)); } else if (line.matchString("*:animpreload*", true)) { - actionList.push_back(ActionPreloadAnimation(line)); + actionList.push_back(new ActionPreloadAnimation(line)); } else if (line.matchString("*:animunload*", true)) { diff --git a/engines/zvision/script_manager.h b/engines/zvision/script_manager.h index 7f46bd51fe..173705edf5 100644 --- a/engines/zvision/script_manager.h +++ b/engines/zvision/script_manager.h @@ -82,7 +82,7 @@ private: * @param stream Scr file stream * @return Created Results object */ - void parseResult(Common::SeekableReadStream &stream, Common::List &actionList) const; + void parseResult(Common::SeekableReadStream &stream, Common::List &actionList) const; /** * Helper method for parsePuzzle. Parses the stream into a bitwise or of the StateFlags enum -- cgit v1.2.3