diff options
author | Strangerke | 2014-08-10 01:44:24 +0200 |
---|---|---|
committer | Strangerke | 2014-08-10 01:44:24 +0200 |
commit | f495d390993a8a0d1e785c71fa36553fab17f90b (patch) | |
tree | 36ea5d58c78f87f72a32ea402a7c46d70151052f | |
parent | 33f432d9891fd07a9d8d6130ef76a8bb14b13a4b (diff) | |
download | scummvm-rg350-f495d390993a8a0d1e785c71fa36553fab17f90b.tar.gz scummvm-rg350-f495d390993a8a0d1e785c71fa36553fab17f90b.tar.bz2 scummvm-rg350-f495d390993a8a0d1e785c71fa36553fab17f90b.zip |
ACCESS: Implement some more opcodes
-rw-r--r-- | engines/access/animation.h | 3 | ||||
-rw-r--r-- | engines/access/scripts.cpp | 31 | ||||
-rw-r--r-- | engines/access/scripts.h | 6 |
3 files changed, 29 insertions, 11 deletions
diff --git a/engines/access/animation.h b/engines/access/animation.h index 010fab98ac..879d1e9318 100644 --- a/engines/access/animation.h +++ b/engines/access/animation.h @@ -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); diff --git a/engines/access/scripts.cpp b/engines/access/scripts.cpp index dc3c62a9c1..fe53c675c2 100644 --- a/engines/access/scripts.cpp +++ b/engines/access/scripts.cpp @@ -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() { } diff --git a/engines/access/scripts.h b/engines/access/scripts.h index 30bffe8112..79ae478cc9 100644 --- a/engines/access/scripts.h +++ b/engines/access/scripts.h @@ -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(); |