aboutsummaryrefslogtreecommitdiff
path: root/engines/simon/vga.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/simon/vga.cpp')
-rw-r--r--engines/simon/vga.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/engines/simon/vga.cpp b/engines/simon/vga.cpp
index effa74bb06..03faf53f1b 100644
--- a/engines/simon/vga.cpp
+++ b/engines/simon/vga.cpp
@@ -152,6 +152,44 @@ void SimonEngine::runVgaScript() {
}
}
+bool SimonEngine::itemIsSiblingOf(uint16 a) {
+ Item *item;
+
+ CHECK_BOUNDS(a, _objectArray);
+
+ item = _objectArray[a];
+ if (item == NULL)
+ return true;
+
+ return me()->parent == item->parent;
+}
+
+bool SimonEngine::itemIsParentOf(uint16 a, uint16 b) {
+ Item *item_a, *item_b;
+
+ CHECK_BOUNDS(a, _objectArray);
+ CHECK_BOUNDS(b, _objectArray);
+
+ item_a = _objectArray[a];
+ item_b = _objectArray[b];
+
+ if (item_a == NULL || item_b == NULL)
+ return true;
+
+ return derefItem(item_a->parent) == item_b;
+}
+
+bool SimonEngine::vc_maybe_skip_proc_1(uint16 a, int16 b) {
+ Item *item;
+
+ CHECK_BOUNDS(a, _objectArray);
+
+ item = _objectArray[a];
+ if (item == NULL)
+ return true;
+ return item->state == b;
+}
+
int SimonEngine::vcReadVarOrWord() {
int16 var = vcReadNextWord();
if (var < 0)