ACCESS: Implement two opcodes
This commit is contained in:
parent
8d45ad265d
commit
992ea95cd7
3 changed files with 32 additions and 7 deletions
|
@ -43,7 +43,7 @@ public:
|
||||||
struct TimerEntry {
|
struct TimerEntry {
|
||||||
int _initTm;
|
int _initTm;
|
||||||
int _timer;
|
int _timer;
|
||||||
bool _flag;
|
byte _flag;
|
||||||
|
|
||||||
TimerEntry() {
|
TimerEntry() {
|
||||||
_initTm = _timer = 0;
|
_initTm = _timer = 0;
|
||||||
|
|
|
@ -102,8 +102,8 @@ void Scripts::executeCommand(int commandIndex) {
|
||||||
&Scripts::cmdSetTex, &Scripts::CMDNEWROOM, &Scripts::CMDCONVERSE,
|
&Scripts::cmdSetTex, &Scripts::CMDNEWROOM, &Scripts::CMDCONVERSE,
|
||||||
&Scripts::cmdCheckFrame, &Scripts::cmdCheckAnim, &Scripts::cmdSnd,
|
&Scripts::cmdCheckFrame, &Scripts::cmdCheckAnim, &Scripts::cmdSnd,
|
||||||
&Scripts::cmdRetNeg, &Scripts::cmdRetPos, &Scripts::cmdCheckLoc,
|
&Scripts::cmdRetNeg, &Scripts::cmdRetPos, &Scripts::cmdCheckLoc,
|
||||||
&Scripts::cmdSetAnim, &Scripts::cmdDispInv, &Scripts::CMDSETTIMER,
|
&Scripts::cmdSetAnim, &Scripts::cmdDispInv, &Scripts::cmdSetTimer,
|
||||||
&Scripts::CMDSETTIMER, &Scripts::CMDCHECKTIMER, &Scripts::cmdSetTravel,
|
&Scripts::cmdSetTimer, &Scripts::cmdCheckTimer, &Scripts::cmdSetTravel,
|
||||||
&Scripts::cmdSetTravel, &Scripts::CMDSETVID, &Scripts::CMDPLAYVID,
|
&Scripts::cmdSetTravel, &Scripts::CMDSETVID, &Scripts::CMDPLAYVID,
|
||||||
&Scripts::cmdPlotImage, &Scripts::cmdSetDisplay, &Scripts::cmdSetBuffer,
|
&Scripts::cmdPlotImage, &Scripts::cmdSetDisplay, &Scripts::cmdSetBuffer,
|
||||||
&Scripts::cmdSetScroll, &Scripts::CMDSAVERECT, &Scripts::CMDSAVERECT,
|
&Scripts::cmdSetScroll, &Scripts::CMDSAVERECT, &Scripts::CMDSAVERECT,
|
||||||
|
@ -355,8 +355,33 @@ void Scripts::cmdDispInv() {
|
||||||
_vm->_inventory->newDisplayInv();
|
_vm->_inventory->newDisplayInv();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scripts::CMDSETTIMER() { error("TODO CMDSETTIMER"); }
|
void Scripts::cmdSetTimer() {
|
||||||
void Scripts::CMDCHECKTIMER() { error("TODO CMDCHECKTIMER"); }
|
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() {
|
void Scripts::cmdSetTravel() {
|
||||||
if (_vm->_room->_selectCommand == 5)
|
if (_vm->_room->_selectCommand == 5)
|
||||||
|
|
|
@ -87,8 +87,8 @@ protected:
|
||||||
void cmdCheckLoc();
|
void cmdCheckLoc();
|
||||||
void cmdSetAnim();
|
void cmdSetAnim();
|
||||||
void cmdDispInv();
|
void cmdDispInv();
|
||||||
void CMDSETTIMER();
|
void cmdSetTimer();
|
||||||
void CMDCHECKTIMER();
|
void cmdCheckTimer();
|
||||||
void cmdSetTravel();
|
void cmdSetTravel();
|
||||||
void CMDSETVID();
|
void CMDSETVID();
|
||||||
void CMDPLAYVID();
|
void CMDPLAYVID();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue