diff options
Diffstat (limited to 'engines/mutationofjb/script.cpp')
-rw-r--r-- | engines/mutationofjb/script.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/engines/mutationofjb/script.cpp b/engines/mutationofjb/script.cpp index d90f37e161..39c485991b 100644 --- a/engines/mutationofjb/script.cpp +++ b/engines/mutationofjb/script.cpp @@ -189,6 +189,23 @@ Command *ScriptExecutionContext::getMacro(const Common::String &name) const { return cmd; } +Command *ScriptExecutionContext::getExtra(const Common::String &name) const { + Command *cmd = nullptr; + + Script *const localScript = _localScriptOverride ? _localScriptOverride : _game.getLocalScript(); + Script *const globalScript = _game.getGlobalScript(); + + if (localScript) { + cmd = localScript->getExtra(name); + } + + if (!cmd && globalScript) { + cmd = globalScript->getExtra(name); + } + + return cmd; +} + bool Script::loadFromStream(Common::SeekableReadStream &stream) { destroy(); @@ -236,6 +253,7 @@ bool Script::loadFromStream(Common::SeekableReadStream &stream) { _macros = parseCtx._macros; _startups = parseCtx._startups; + _extras = parseCtx._extras; return true; } @@ -285,4 +303,13 @@ Command *Script::getStartup(uint8 startupId) const { return it->_value; } +Command *Script::getExtra(const Common::String &name) const { + Extras::const_iterator it = _extras.find(name); + if (it == _extras.end()) { + return nullptr; + } + + return it->_value; +} + } |