diff --git a/engines/access/animation.h b/engines/access/animation.h index 010fab98ac8..879d1e93180 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 dc3c62a9c13..fe53c675c23 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 30bffe81124..79ae478cc96 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();