aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStrangerke2014-08-10 01:44:24 +0200
committerStrangerke2014-08-10 01:44:24 +0200
commitf495d390993a8a0d1e785c71fa36553fab17f90b (patch)
tree36ea5d58c78f87f72a32ea402a7c46d70151052f
parent33f432d9891fd07a9d8d6130ef76a8bb14b13a4b (diff)
downloadscummvm-rg350-f495d390993a8a0d1e785c71fa36553fab17f90b.tar.gz
scummvm-rg350-f495d390993a8a0d1e785c71fa36553fab17f90b.tar.bz2
scummvm-rg350-f495d390993a8a0d1e785c71fa36553fab17f90b.zip
ACCESS: Implement some more opcodes
-rw-r--r--engines/access/animation.h3
-rw-r--r--engines/access/scripts.cpp31
-rw-r--r--engines/access/scripts.h6
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();