diff options
Diffstat (limited to 'engines/director/lingo')
-rw-r--r-- | engines/director/lingo/lingo-builtins.cpp | 4 | ||||
-rw-r--r-- | engines/director/lingo/lingo-funcs.cpp | 35 | ||||
-rw-r--r-- | engines/director/lingo/lingo.h | 4 |
3 files changed, 41 insertions, 2 deletions
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp index 1d93b9ab44..a53601366d 100644 --- a/engines/director/lingo/lingo-builtins.cpp +++ b/engines/director/lingo/lingo-builtins.cpp @@ -615,7 +615,7 @@ void Lingo::b_alert(int nargs) { void Lingo::b_cursor(int nargs) { Datum d = g_lingo->pop(); d.toInt(); - warning("STUB: b_cursor(%d)", d.u.i); + g_lingo->func_cursor(d.u.i); } void Lingo::b_showGlobals(int nargs) { @@ -767,7 +767,7 @@ void Lingo::b_point(int nargs) { /////////////////// void Lingo::b_beep(int nargs) { Datum d = g_lingo->pop(); - warning("STUB: b_beep(%d)", d.u.i); + g_lingo->func_beep(d.u.i); } void Lingo::b_mci(int nargs) { diff --git a/engines/director/lingo/lingo-funcs.cpp b/engines/director/lingo/lingo-funcs.cpp index e22044c1e9..6becd1410d 100644 --- a/engines/director/lingo/lingo-funcs.cpp +++ b/engines/director/lingo/lingo-funcs.cpp @@ -26,6 +26,7 @@ #include "common/util.h" #include "director/lingo/lingo-gr.h" #include "director/sound.h" +#include "graphics/macgui/macwindowmanager.h" namespace Director { @@ -210,4 +211,38 @@ void Lingo::func_gotoprevious() { _vm->_currentScore->gotoprevious(); } +void Lingo::func_cursor(int c) { + if (_cursorOnStack) { + //pop cursor + _vm->getMacWindowManager()->popCursor(); + } + + //and then push cursor. + switch (c) { + case 0: + case -1: + _vm->getMacWindowManager()->pushArrowCursor(); + break; + case 1: + _vm->getMacWindowManager()->pushBeamCursor(); + break; + case 2: + _vm->getMacWindowManager()->pushCrossHairCursor(); + break; + case 3: + _vm->getMacWindowManager()->pushCrossBarCursor(); + break; + case 4: + _vm->getMacWindowManager()->pushWatchCursor(); + break; + } + + warning("STUB: func_cursor(%d)", c); +} + +void Lingo::func_beep(int repeats) { + for (int r = 0; r <= repeats; r++) + _vm->getSoundManager()->systemBeep(); +} + } diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h index 5e7242abe6..67ab57ae22 100644 --- a/engines/director/lingo/lingo.h +++ b/engines/director/lingo/lingo.h @@ -401,10 +401,12 @@ public: void func_mci(Common::String &s); void func_mciwait(Common::String &s); + void func_beep(int repeats); void func_goto(Datum &frame, Datum &movie); void func_gotoloop(); void func_gotonext(); void func_gotoprevious(); + void func_cursor(int c); public: void setTheEntity(int entity, Datum &id, int field, Datum &d); @@ -440,6 +442,8 @@ public: bool _exitRepeat; + bool _cursorOnStack; + private: int parse(const char *code); void parseMenu(const char *code); |