aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/zvision/script_manager.cpp23
-rw-r--r--engines/zvision/script_manager.h10
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