ACCESS: Implement some more opcodes

This commit is contained in:
Strangerke 2014-08-10 01:44:24 +02:00
parent 33f432d989
commit f495d39099
3 changed files with 29 additions and 11 deletions

View File

@ -32,8 +32,6 @@ namespace Access {
class Animation;
class AnimationManager : public Manager {
private:
Animation *findAnimation(int animId);
public:
const byte *_anim;
Animation *_animation;
@ -44,6 +42,7 @@ public:
void freeAnimationData();
void clearTimers();
Animation *findAnimation(int animId);
Animation *setAnimation(int animId);
void setAnimTimer(Animation *anim);

View File

@ -89,14 +89,14 @@ void Scripts::executeCommand(int commandIndex) {
&Scripts::cmdSetFlag, &Scripts::cmdCheckFlag, &Scripts::cmdGoto,
&Scripts::cmdSetInventory, &Scripts::cmdSetInventory, &Scripts::cmdCheckInventory,
&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::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,
&Scripts::CMDSETBUFVID, &Scripts::CMDPLAYBUFVID, &Scripts::CMDREMOVELAST,
&Scripts::CMDSETBUFVID, &Scripts::CMDPLAYBUFVID, &Scripts::cmeRemoveLast,
&Scripts::CMDSPECIAL, &Scripts::CMDSPECIAL, &Scripts::CMDSPECIAL,
&Scripts::CMDSETCYCLE, &Scripts::CMDCYCLE, &Scripts::CMDCHARSPEAK,
&Scripts::CMDTEXSPEAK, &Scripts::CMDTEXCHOICE, &Scripts::CMDWAIT,
@ -105,7 +105,7 @@ void Scripts::executeCommand(int commandIndex) {
&Scripts::CMDFREESOUND, &Scripts::CMDSETVIDSND, &Scripts::CMDPLAYVIDSND,
&Scripts::CMDPUSHLOCATION, &Scripts::CMDPUSHLOCATION, &Scripts::CMDPUSHLOCATION,
&Scripts::CMDPUSHLOCATION, &Scripts::CMDPUSHLOCATION, &Scripts::cmdPlayerOff,
&Scripts::cmdPlayerOn, &Scripts::CMDDEAD, &Scripts::CMDFADEOUT,
&Scripts::cmdPlayerOn, &Scripts::CMDDEAD, &Scripts::cmdFadeOut,
&Scripts::CMDENDVID, &Scripts::CMDHELP, &Scripts::CMDCYCLEBACK,
&Scripts::CMDCHAPTER, &Scripts::CMDSETHELP, &Scripts::CMDCENTERPANEL,
&Scripts::cmdMainPanel, &Scripts::CMDRETFLASH
@ -220,7 +220,18 @@ void Scripts::CMDSETTEX() { }
void Scripts::CMDNEWROOM() { }
void Scripts::CMDCONVERSE() { }
void Scripts::CMDCHECKFRAME() { }
void Scripts::CMDCHECKANIM() { }
void Scripts::cmdCheckAnim() {
int id = _data->readUint16LE();
Animation *anim = _vm->_animation->findAnimation(id);
if (anim->_currentLoopCount == -1) {
_data->skip(2);
cmdGoto();
} else
_data->skip(4);
}
void Scripts::CMDSND() { }
void Scripts::CMDRETNEG() { }
@ -258,7 +269,11 @@ void Scripts::CMDSETSCROLL() { }
void Scripts::CMDSAVERECT() { }
void Scripts::CMDSETBUFVID() { }
void Scripts::CMDPLAYBUFVID() { }
void Scripts::CMDREMOVELAST() { }
void Scripts::cmeRemoveLast() {
--_vm->_numAnimTimers;
}
void Scripts::CMDSPECIAL() { }
void Scripts::CMDSETCYCLE() { }
void Scripts::CMDCYCLE() { }
@ -286,7 +301,11 @@ void Scripts::cmdPlayerOn() {
}
void Scripts::CMDDEAD() { }
void Scripts::CMDFADEOUT() { }
void Scripts::cmdFadeOut() {
_vm->_screen->forceFadeOut();
}
void Scripts::CMDENDVID() { }
void Scripts::CMDHELP() { }
void Scripts::CMDCYCLEBACK() { }

View File

@ -67,7 +67,7 @@ protected:
void CMDNEWROOM();
void CMDCONVERSE();
void CMDCHECKFRAME();
void CMDCHECKANIM();
void cmdCheckAnim();
void CMDSND();
void CMDRETNEG();
void cmdCheckLoc();
@ -85,7 +85,7 @@ protected:
void CMDSAVERECT();
void CMDSETBUFVID();
void CMDPLAYBUFVID();
void CMDREMOVELAST();
void cmeRemoveLast();
void CMDSPECIAL();
void CMDSETCYCLE();
void CMDCYCLE();
@ -106,7 +106,7 @@ protected:
void cmdPlayerOff();
void cmdPlayerOn();
void CMDDEAD();
void CMDFADEOUT();
void cmdFadeOut();
void CMDENDVID();
void CMDHELP();
void CMDCYCLEBACK();