diff options
author | Strangerke | 2014-08-19 07:48:00 +0200 |
---|---|---|
committer | Strangerke | 2014-08-19 07:48:00 +0200 |
commit | 992ea95cd796aafeb1a1c61fcf29d57c7ecba8db (patch) | |
tree | 33630566b3f2f3544d5ff49dda4bec7046cbdb83 | |
parent | 8d45ad265d0da07a1d2541cb74140185a8847417 (diff) | |
download | scummvm-rg350-992ea95cd796aafeb1a1c61fcf29d57c7ecba8db.tar.gz scummvm-rg350-992ea95cd796aafeb1a1c61fcf29d57c7ecba8db.tar.bz2 scummvm-rg350-992ea95cd796aafeb1a1c61fcf29d57c7ecba8db.zip |
ACCESS: Implement two opcodes
-rw-r--r-- | engines/access/data.h | 2 | ||||
-rw-r--r-- | engines/access/scripts.cpp | 33 | ||||
-rw-r--r-- | engines/access/scripts.h | 4 |
3 files changed, 32 insertions, 7 deletions
diff --git a/engines/access/data.h b/engines/access/data.h index 8ba3c58c82..1d1f85966a 100644 --- a/engines/access/data.h +++ b/engines/access/data.h @@ -43,7 +43,7 @@ public: struct TimerEntry { int _initTm; int _timer; - bool _flag; + byte _flag; TimerEntry() { _initTm = _timer = 0; diff --git a/engines/access/scripts.cpp b/engines/access/scripts.cpp index 1e5bbc8982..b4a231c784 100644 --- a/engines/access/scripts.cpp +++ b/engines/access/scripts.cpp @@ -102,8 +102,8 @@ void Scripts::executeCommand(int commandIndex) { &Scripts::cmdSetTex, &Scripts::CMDNEWROOM, &Scripts::CMDCONVERSE, &Scripts::cmdCheckFrame, &Scripts::cmdCheckAnim, &Scripts::cmdSnd, &Scripts::cmdRetNeg, &Scripts::cmdRetPos, &Scripts::cmdCheckLoc, - &Scripts::cmdSetAnim, &Scripts::cmdDispInv, &Scripts::CMDSETTIMER, - &Scripts::CMDSETTIMER, &Scripts::CMDCHECKTIMER, &Scripts::cmdSetTravel, + &Scripts::cmdSetAnim, &Scripts::cmdDispInv, &Scripts::cmdSetTimer, + &Scripts::cmdSetTimer, &Scripts::cmdCheckTimer, &Scripts::cmdSetTravel, &Scripts::cmdSetTravel, &Scripts::CMDSETVID, &Scripts::CMDPLAYVID, &Scripts::cmdPlotImage, &Scripts::cmdSetDisplay, &Scripts::cmdSetBuffer, &Scripts::cmdSetScroll, &Scripts::CMDSAVERECT, &Scripts::CMDSAVERECT, @@ -355,8 +355,33 @@ void Scripts::cmdDispInv() { _vm->_inventory->newDisplayInv(); } -void Scripts::CMDSETTIMER() { error("TODO CMDSETTIMER"); } -void Scripts::CMDCHECKTIMER() { error("TODO CMDCHECKTIMER"); } +void Scripts::cmdSetTimer() { + int idx = _data->readUint16LE(); + int val = _data->readUint16LE(); + + ++_vm->_timers[idx]._flag; + _vm->_timers[idx]._timer = val; + _vm->_timers[idx]._initTm = val; + + _vm->_events->debounceLeft(); + _vm->_events->zeroKeys(); +} + +void Scripts::cmdCheckTimer() { + int idx = _data->readUint16LE(); + + if ((idx == 9) && (_vm->_events->_keypresses.size() > 0)) { + _vm->_events->zeroKeys(); + _vm->_timers[9]._timer = 0; + _vm->_timers[9]._flag = 0; + } + + int val = _data->readUint16LE() & 0xFF; + if (_vm->_timers[idx]._flag == val) + cmdGoto(); + else + _data->skip(2); +} void Scripts::cmdSetTravel() { if (_vm->_room->_selectCommand == 5) diff --git a/engines/access/scripts.h b/engines/access/scripts.h index 6941c047d1..40f667a2f1 100644 --- a/engines/access/scripts.h +++ b/engines/access/scripts.h @@ -87,8 +87,8 @@ protected: void cmdCheckLoc(); void cmdSetAnim(); void cmdDispInv(); - void CMDSETTIMER(); - void CMDCHECKTIMER(); + void cmdSetTimer(); + void cmdCheckTimer(); void cmdSetTravel(); void CMDSETVID(); void CMDPLAYVID(); |