aboutsummaryrefslogtreecommitdiff
path: root/engines/dreamweb/monitor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/dreamweb/monitor.cpp')
-rw-r--r--engines/dreamweb/monitor.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/engines/dreamweb/monitor.cpp b/engines/dreamweb/monitor.cpp
index db3401e078..f1b870d9c0 100644
--- a/engines/dreamweb/monitor.cpp
+++ b/engines/dreamweb/monitor.cpp
@@ -662,5 +662,45 @@ const char *DreamBase::parser() {
return output;
}
+void DreamGenContext::searchForString() {
+ const char *topic = (const char*)es.ptr(di, 0);
+ const char *text = (const char*)ds.ptr(si, 0);
+ const char *found = searchForString(topic, text);
+ if (!found) {
+ al = 1;
+ } else {
+ es = ds;
+ bx = si + (found - text);
+ si = bx;
+ al = 0;
+ }
+}
+
+// input: es:di : topic
+// ds:si : monitor text
+const char *DreamBase::searchForString(const char *topic, const char *text) {
+ char delim = *topic;
+
+ while (true) {
+ const char *s = topic;
+ int delimCount = 0;
+
+ char c;
+ do {
+ c = makeCaps(*text++);
+
+ if (c == '*' || (delim == '=' && c == 34))
+ return 0;
+
+ if (c == delim) {
+ delimCount++;
+ if (delimCount == 2)
+ return text;
+ }
+
+ } while (c == *s++);
+ }
+}
+
} // End of namespace DreamGen