diff options
Diffstat (limited to 'engines/zvision/script_manager.cpp')
| -rw-r--r-- | engines/zvision/script_manager.cpp | 21 | 
1 files changed, 17 insertions, 4 deletions
diff --git a/engines/zvision/script_manager.cpp b/engines/zvision/script_manager.cpp index fe6548cd80..027fec43a1 100644 --- a/engines/zvision/script_manager.cpp +++ b/engines/zvision/script_manager.cpp @@ -35,13 +35,12 @@ namespace ZVision {  ScriptManager::ScriptManager(ZVision *engine) : _engine(engine) {} -// TODO: Actually do something in the initialize or remove it  void ScriptManager::initialize() { -	 +	parseScrFile("universe.scr", true);  }  void ScriptManager::createReferenceTable() { -	// Iterate through each Puzzle +	// Iterate through each local Puzzle  	for (Common::List<Puzzle>::iterator activePuzzleIter = _activePuzzles.begin(); activePuzzleIter != _activePuzzles.end(); activePuzzleIter++) {  		Puzzle *puzzlePtr = &(*activePuzzleIter); @@ -50,7 +49,21 @@ void ScriptManager::createReferenceTable() {  			_referenceTable[criteriaIter->key].push_back(puzzlePtr);  			// If the argument is a key, add a reference to it as well -			if (criteriaIter->argument) +			if (criteriaIter->argumentIsAKey) +				_referenceTable[criteriaIter->argument].push_back(puzzlePtr); +		} +	} + +	// Iterate through each global Puzzle +	for (Common::List<Puzzle>::iterator globalPuzzleIter = _globalPuzzles.begin(); globalPuzzleIter != _globalPuzzles.end(); globalPuzzleIter++) { +		Puzzle *puzzlePtr = &(*globalPuzzleIter); + +		// Iterate through each Criteria and add a reference from the criteria key to the Puzzle +		for (Common::List<Puzzle::Criteria>::iterator criteriaIter = globalPuzzleIter->criteriaList.begin(); criteriaIter != (*globalPuzzleIter).criteriaList.end(); criteriaIter++) { +			_referenceTable[criteriaIter->key].push_back(puzzlePtr); + +			// If the argument is a key, add a reference to it as well +			if (criteriaIter->argumentIsAKey)  				_referenceTable[criteriaIter->argument].push_back(puzzlePtr);  		}  	}  | 
