diff options
-rw-r--r-- | engines/zvision/script_manager.cpp | 23 | ||||
-rw-r--r-- | engines/zvision/script_manager.h | 10 |
2 files changed, 33 insertions, 0 deletions
diff --git a/engines/zvision/script_manager.cpp b/engines/zvision/script_manager.cpp index fe8ec897b9..e88c1ebca7 100644 --- a/engines/zvision/script_manager.cpp +++ b/engines/zvision/script_manager.cpp @@ -515,4 +515,27 @@ Location ScriptManager::getCurrentLocation() const { return location; } +ValueSlot::ValueSlot(ScriptManager *sc_man, const char *slot_val): + _sc_man(sc_man) { + value = 0; + slot = false; + const char *is_slot = strstr(slot_val, "["); + if (is_slot) { + slot = true; + value = atoi(is_slot + 1); + } else { + slot = false; + value = atoi(slot_val); + } +} +int16 ValueSlot::getValue() { + if (slot) { + if (value >= 0) + return _sc_man->getStateValue(value); + else + return 0; + } else + return value; +} + } // End of namespace ZVision diff --git a/engines/zvision/script_manager.h b/engines/zvision/script_manager.h index 3399484970..dd995f4661 100644 --- a/engines/zvision/script_manager.h +++ b/engines/zvision/script_manager.h @@ -304,6 +304,16 @@ private: Control *parseControl(Common::String &line, Common::SeekableReadStream &stream); }; +class ValueSlot { +public: + ValueSlot(ScriptManager *sc_man, const char *slot_val); + int16 getValue(); +private: + int16 value; + bool slot; + ScriptManager *_sc_man; +}; + } // End of namespace ZVision |