diff options
Diffstat (limited to 'engines/director/lingo')
-rw-r--r-- | engines/director/lingo/lingo-builtins.cpp | 5 | ||||
-rw-r--r-- | engines/director/lingo/lingo-funcs.cpp | 23 | ||||
-rw-r--r-- | engines/director/lingo/lingo.h | 1 |
3 files changed, 22 insertions, 7 deletions
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp index 4d3b7ddf5b..cf044f2072 100644 --- a/engines/director/lingo/lingo-builtins.cpp +++ b/engines/director/lingo/lingo-builtins.cpp @@ -905,9 +905,8 @@ void Lingo::b_label(int nargs) { void Lingo::b_marker(int nargs) { Datum d = g_lingo->pop(); d.toInt(); - warning("STUB: b_marker(%d)", d.u.i); - - g_lingo->push(Datum(0)); + int marker = g_lingo->func_marker(d.u.i); + g_lingo->push(marker); } void Lingo::b_moveableSprite(int nargs) { diff --git a/engines/director/lingo/lingo-funcs.cpp b/engines/director/lingo/lingo-funcs.cpp index 70580b10be..140549be8b 100644 --- a/engines/director/lingo/lingo-funcs.cpp +++ b/engines/director/lingo/lingo-funcs.cpp @@ -212,21 +212,21 @@ void Lingo::func_gotoloop() { if (!_vm->_currentScore) return; - _vm->_currentScore->gotoloop(); + _vm->_currentScore->gotoLoop(); } void Lingo::func_gotonext() { if (!_vm->_currentScore) return; - _vm->_currentScore->gotonext(); + _vm->_currentScore->gotoNext(); } - + void Lingo::func_gotoprevious() { if (!_vm->_currentScore) return; - _vm->_currentScore->gotoprevious(); + _vm->_currentScore->gotoPrevious(); } void Lingo::func_cursor(int c) { @@ -265,4 +265,19 @@ void Lingo::func_beep(int repeats) { _vm->getSoundManager()->systemBeep(); } +int Lingo::func_marker(int m) { + int labelNumber = _vm->getCurrentScore()->getCurrentLabelNumber(); + if (m != 0) { + if (m < 0) { + for (int marker = 0; marker > m; marker--) + labelNumber = _vm->getCurrentScore()->getPreviousLabelNumber(labelNumber); + } else { + for (int marker = 0; marker < m; marker++) + labelNumber = _vm->getCurrentScore()->getNextLabelNumber(labelNumber); + } + } + + return labelNumber; +} + } diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h index a739ee77e7..8e033b181d 100644 --- a/engines/director/lingo/lingo.h +++ b/engines/director/lingo/lingo.h @@ -460,6 +460,7 @@ public: void func_gotonext(); void func_gotoprevious(); void func_cursor(int c); + int func_marker(int m); public: void setTheEntity(int entity, Datum &id, int field, Datum &d); |