diff options
author | Max Horn | 2006-04-29 16:51:29 +0000 |
---|---|---|
committer | Max Horn | 2006-04-29 16:51:29 +0000 |
commit | aeef84c96198df9aedbd9bbc51db5868b6f9bc33 (patch) | |
tree | a0451828ce913d4cd639c9db4c5b7051496117b5 | |
parent | fcd178fca4477d6aae8eb55da6e4191f84cb7a10 (diff) | |
download | scummvm-rg350-aeef84c96198df9aedbd9bbc51db5868b6f9bc33.tar.gz scummvm-rg350-aeef84c96198df9aedbd9bbc51db5868b6f9bc33.tar.bz2 scummvm-rg350-aeef84c96198df9aedbd9bbc51db5868b6f9bc33.zip |
Moved AKOS stuff to class ScummEngine_v6
svn-id: r22229
-rw-r--r-- | engines/scumm/actor.cpp | 10 | ||||
-rw-r--r-- | engines/scumm/akos.cpp | 10 | ||||
-rw-r--r-- | engines/scumm/intern.h | 17 | ||||
-rw-r--r-- | engines/scumm/scumm.cpp | 6 | ||||
-rw-r--r-- | engines/scumm/scumm.h | 14 |
5 files changed, 32 insertions, 25 deletions
diff --git a/engines/scumm/actor.cpp b/engines/scumm/actor.cpp index 903d5d007b..2574ab1bec 100644 --- a/engines/scumm/actor.cpp +++ b/engines/scumm/actor.cpp @@ -1014,6 +1014,10 @@ void ScummEngine::processActors() { a->animateCostume(); } } +} + +void ScummEngine_v6::processActors() { + ScummEngine::processActors(); if (_game.features & GF_NEW_COSTUMES) akos_processQueue(); @@ -1024,7 +1028,7 @@ void ScummEngine_v71he::processActors() { preProcessAuxQueue(); if (!_skipProcessActors) - ScummEngine::processActors(); + ScummEngine_v6::processActors(); _fullRedraw = false; @@ -1038,7 +1042,7 @@ void ScummEngine_v90he::processActors() { _sprite->processImages(true); if (!_skipProcessActors) - ScummEngine::processActors(); + ScummEngine_v6::processActors(); _fullRedraw = false; @@ -1240,7 +1244,7 @@ void Actor::animateLimb(int limb, int f) { while (f--) { if (_cost.active[limb] != 0) - _vm->akos_increaseAnim(this, limb, aksq, (const uint16 *)akfo, size); + ((ScummEngine_v6 *)_vm)->akos_increaseAnim(this, limb, aksq, (const uint16 *)akfo, size); } // _needRedraw = true; diff --git a/engines/scumm/akos.cpp b/engines/scumm/akos.cpp index 563855bf4d..bce6a872cb 100644 --- a/engines/scumm/akos.cpp +++ b/engines/scumm/akos.cpp @@ -1334,10 +1334,10 @@ byte AkosRenderer::codec32(int xmoveCur, int ymoveCur) { } byte AkosCostumeLoader::increaseAnims(Actor *a) { - return _vm->akos_increaseAnims(_akos, a); + return ((ScummEngine_v6 *)_vm)->akos_increaseAnims(_akos, a); } -bool ScummEngine::akos_increaseAnims(const byte *akos, Actor *a) { +bool ScummEngine_v6::akos_increaseAnims(const byte *akos, Actor *a) { const byte *aksq, *akfo; int i; uint size; @@ -1360,7 +1360,7 @@ bool ScummEngine::akos_increaseAnims(const byte *akos, Actor *a) { #define GUW(o) READ_LE_UINT16(aksq+curpos+(o)) #define GB(o) aksq[curpos+(o)] -bool ScummEngine::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const uint16 *akfo, int numakfo) { +bool ScummEngine_v6::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const uint16 *akfo, int numakfo) { byte active; uint old_curpos, curpos, end; uint code; @@ -1721,7 +1721,7 @@ bool ScummEngine::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const return curpos != old_curpos; } -void ScummEngine::akos_queCommand(byte cmd, Actor *a, int param_1, int param_2) { +void ScummEngine_v6::akos_queCommand(byte cmd, Actor *a, int param_1, int param_2) { _akosQueuePos++; checkRange(31, 0, _akosQueuePos, "akos_queCommand overflow"); @@ -1731,7 +1731,7 @@ void ScummEngine::akos_queCommand(byte cmd, Actor *a, int param_1, int param_2) _akosQueue[_akosQueuePos].param2 = param_2; } -void ScummEngine::akos_processQueue() { +void ScummEngine_v6::akos_processQueue() { byte cmd; int actor, param_1, param_2; diff --git a/engines/scumm/intern.h b/engines/scumm/intern.h index 2318aae4c1..b58d4fe9c6 100644 --- a/engines/scumm/intern.h +++ b/engines/scumm/intern.h @@ -564,6 +564,15 @@ protected: int _blastTextQueuePos; BlastText _blastTextQueue[50]; + // Akos Class + struct { + int16 cmd; + int16 actor; + int16 param1; + int16 param2; + } _akosQueue[32]; + int16 _akosQueuePos; + public: ScummEngine_v6(OSystem *syst, const DetectorResult &dr); @@ -620,6 +629,14 @@ protected: virtual void clearDrawQueues(); +public: + bool akos_increaseAnims(const byte *akos, Actor *a); + bool akos_increaseAnim(Actor *a, int i, const byte *aksq, const uint16 *akfo, int numakfo); +protected: + void akos_queCommand(byte cmd, Actor *a, int param_1, int param_2); + virtual void akos_processQueue(); + + virtual void processActors(); /* Version 6 script opcodes */ void o6_setBlastObjectWindow(); diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp index ade41b8675..b98d47e391 100644 --- a/engines/scumm/scumm.cpp +++ b/engines/scumm/scumm.cpp @@ -428,9 +428,6 @@ ScummEngine::ScummEngine(OSystem *syst, const DetectorResult &dr) _skipDrawObject = 0; - memset(_akosQueue, 0, sizeof(_akosQueue)); - _akosQueuePos = 0; - // // Init all VARS to 0xFF // @@ -789,6 +786,9 @@ ScummEngine_v6::ScummEngine_v6(OSystem *syst, const DetectorResult &dr) _smushFrameRate = 0; + memset(_akosQueue, 0, sizeof(_akosQueue)); + _akosQueuePos = 0; + VAR_VIDEONAME = 0xFF; VAR_RANDOM_NR = 0xFF; VAR_STRING2DRAW = 0xFF; diff --git a/engines/scumm/scumm.h b/engines/scumm/scumm.h index eef0254cf1..e5833ca109 100644 --- a/engines/scumm/scumm.h +++ b/engines/scumm/scumm.h @@ -947,22 +947,8 @@ public: // Generic costume code bool isCostumeInUse(int i) const; - // Akos Class - struct { - int16 cmd; - int16 actor; - int16 param1; - int16 param2; - } _akosQueue[32]; - int16 _akosQueuePos; - Common::Rect _actorClipOverride; - bool akos_increaseAnims(const byte *akos, Actor *a); - bool akos_increaseAnim(Actor *a, int i, const byte *aksq, const uint16 *akfo, int numakfo); - void akos_queCommand(byte cmd, Actor *a, int param_1, int param_2); - virtual void akos_processQueue(); - protected: /* Should be in Graphics class? */ uint16 _screenB, _screenH; |