aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/selector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/engine/selector.cpp')
-rw-r--r--engines/sci/engine/selector.cpp139
1 files changed, 139 insertions, 0 deletions
diff --git a/engines/sci/engine/selector.cpp b/engines/sci/engine/selector.cpp
index 5e8b969edf..720c7546d8 100644
--- a/engines/sci/engine/selector.cpp
+++ b/engines/sci/engine/selector.cpp
@@ -29,6 +29,145 @@
namespace Sci {
+#if 1
+
+#define FIND_SELECTOR(_slc_) _selectorCache._slc_ = findSelector(#_slc_)
+#define FIND_SELECTOR2(_slc_, _slcstr_) _selectorCache._slc_ = findSelector(_slcstr_)
+
+#else
+
+// The defines below can be used to construct static selector tables for games which don't have
+// a vocab.997 resource, by dumping the selector table from other similar versions or games
+#define FIND_SELECTOR(_slc_) _selectorCache._slc_ = findSelector(#_slc_); \
+ printf("\t{ \"%s\", %d },\n", #_slc_, _selectorCache._slc_)
+
+#define FIND_SELECTOR2(_slc_, _slcstr_) _selectorCache._slc_ = findSelector(_slcstr_); \
+ printf("\t{ \"%s\", %d },\n", _slcstr_, _selectorCache._slc_)
+
+#endif
+
+void Kernel::mapSelectors() {
+ // species
+ // superClass
+ // -info-
+ FIND_SELECTOR(y);
+ FIND_SELECTOR(x);
+ FIND_SELECTOR(view);
+ FIND_SELECTOR(loop);
+ FIND_SELECTOR(cel);
+ FIND_SELECTOR(underBits);
+ FIND_SELECTOR(nsTop);
+ FIND_SELECTOR(nsLeft);
+ FIND_SELECTOR(nsBottom);
+ FIND_SELECTOR(lsTop);
+ FIND_SELECTOR(lsLeft);
+ FIND_SELECTOR(lsBottom);
+ FIND_SELECTOR(lsRight);
+ FIND_SELECTOR(nsRight);
+ FIND_SELECTOR(signal);
+ FIND_SELECTOR(illegalBits);
+ FIND_SELECTOR(brTop);
+ FIND_SELECTOR(brLeft);
+ FIND_SELECTOR(brBottom);
+ FIND_SELECTOR(brRight);
+ // name
+ // key
+ // time
+ FIND_SELECTOR(text);
+ FIND_SELECTOR(elements);
+ // color
+ // back
+ FIND_SELECTOR(mode);
+ // style
+ FIND_SELECTOR(state);
+ FIND_SELECTOR(font);
+ FIND_SELECTOR(type);
+ // window
+ FIND_SELECTOR(cursor);
+ FIND_SELECTOR(max);
+ // mark
+ // who
+ FIND_SELECTOR(message);
+ // edit
+ FIND_SELECTOR(play);
+ FIND_SELECTOR(number);
+ FIND_SELECTOR(handle); // nodePtr
+ FIND_SELECTOR(client);
+ FIND_SELECTOR(dx);
+ FIND_SELECTOR(dy);
+ FIND_SELECTOR2(b_movCnt, "b-moveCnt");
+ FIND_SELECTOR2(b_i1, "b-i1");
+ FIND_SELECTOR2(b_i2, "b-i2");
+ FIND_SELECTOR2(b_di, "b-di");
+ FIND_SELECTOR2(b_xAxis, "b-xAxis");
+ FIND_SELECTOR2(b_incr, "b-incr");
+ FIND_SELECTOR(xStep);
+ FIND_SELECTOR(yStep);
+ FIND_SELECTOR(moveSpeed);
+ FIND_SELECTOR(canBeHere); // cantBeHere
+ FIND_SELECTOR(heading);
+ FIND_SELECTOR(mover);
+ FIND_SELECTOR(doit);
+ FIND_SELECTOR(isBlocked);
+ FIND_SELECTOR(looper);
+ FIND_SELECTOR(priority);
+ FIND_SELECTOR(modifiers);
+ FIND_SELECTOR(replay);
+ // setPri
+ // at
+ // next
+ // done
+ // width
+ FIND_SELECTOR(wordFail);
+ FIND_SELECTOR(syntaxFail);
+ // semanticFail
+ // pragmaFail
+ // said
+ FIND_SELECTOR(claimed);
+ // value
+ // save
+ // restore
+ // title
+ // button
+ // icon
+ // draw
+ FIND_SELECTOR2(delete_, "delete");
+ FIND_SELECTOR(z);
+ // -----------------------------
+ FIND_SELECTOR(size);
+ FIND_SELECTOR(moveDone);
+ FIND_SELECTOR(vol);
+ FIND_SELECTOR(pri);
+ FIND_SELECTOR(min);
+ FIND_SELECTOR(sec);
+ FIND_SELECTOR(frame);
+ FIND_SELECTOR(dataInc);
+ FIND_SELECTOR(palette);
+ FIND_SELECTOR(cantBeHere);
+ FIND_SELECTOR(nodePtr);
+ FIND_SELECTOR(flags);
+ FIND_SELECTOR(points);
+ FIND_SELECTOR(syncCue);
+ FIND_SELECTOR(syncTime);
+ FIND_SELECTOR(printLang);
+ FIND_SELECTOR(subtitleLang);
+ FIND_SELECTOR(parseLang);
+ FIND_SELECTOR(overlay);
+ FIND_SELECTOR(setCursor);
+ FIND_SELECTOR(topString);
+ FIND_SELECTOR(scaleSignal);
+ FIND_SELECTOR(scaleX);
+ FIND_SELECTOR(scaleY);
+
+#ifdef ENABLE_SCI32
+ FIND_SELECTOR(data);
+ FIND_SELECTOR(picture);
+ FIND_SELECTOR(plane);
+ FIND_SELECTOR(top);
+ FIND_SELECTOR(left);
+#endif
+}
+
reg_t read_selector(SegManager *segMan, reg_t object, Selector selector_id) {
ObjVarRef address;