aboutsummaryrefslogtreecommitdiff
path: root/engines/draci/animation.cpp
diff options
context:
space:
mode:
authorDenis Kasak2009-07-03 17:50:22 +0000
committerDenis Kasak2009-07-03 17:50:22 +0000
commitc178409b56990297e7521b072fda1d537b067b4c (patch)
tree52891afebee4a00c088aec8ef052f93b47af1c24 /engines/draci/animation.cpp
parent90e6ff9d8a2dab45ddaba2713831d47264493fa0 (diff)
downloadscummvm-rg350-c178409b56990297e7521b072fda1d537b067b4c.tar.gz
scummvm-rg350-c178409b56990297e7521b072fda1d537b067b4c.tar.bz2
scummvm-rg350-c178409b56990297e7521b072fda1d537b067b4c.zip
Implemented beginning of the animation engine.
svn-id: r42068
Diffstat (limited to 'engines/draci/animation.cpp')
-rw-r--r--engines/draci/animation.cpp80
1 files changed, 80 insertions, 0 deletions
diff --git a/engines/draci/animation.cpp b/engines/draci/animation.cpp
index 0aa9c14b8a..c074deb867 100644
--- a/engines/draci/animation.cpp
+++ b/engines/draci/animation.cpp
@@ -23,7 +23,87 @@
*
*/
+#include "draci/draci.h"
+#include "draci/animation.h"
+
namespace Draci {
+void Animation::addAnimation(uint id, uint z) {
+
+ AnimObj *obj = new AnimObj();
+ obj->_id = id;
+ obj->_z = z;
+ obj->_currentFrame = 0;
+
+ insertAnimation(*obj);
+}
+
+Common::List<AnimObj>::iterator Animation::getAnimation(uint id) {
+
+ Common::List<AnimObj>::iterator it;
+
+ for (it = _animObjects.begin(); it != _animObjects.end(); ++it) {
+ if (it->_id == id) {
+ return it;
+ }
+ }
+
+ return _animObjects.end();
+}
+
+void Animation::insertAnimation(AnimObj &animObj) {
+
+ Common::List<AnimObj>::iterator it;
+
+ for (it = _animObjects.begin(); it != _animObjects.end(); ++it) {
+ if (animObj._z < it->_z)
+ break;
+ }
+
+ _animObjects.insert(it, animObj);
+}
+
+void Animation::addFrame(uint id, Drawable *frame) {
+
+ Common::List<AnimObj>::iterator it = getAnimation(id);
+
+ it->_frames.push_back(frame);
+}
+
+void Animation::addOverlay(Drawable *overlay, uint z) {
+ AnimObj *obj = new AnimObj();
+ obj->_id = kOverlayImage;
+ obj->_z = z;
+ obj->_currentFrame = 0;
+ obj->_frames.push_back(overlay);
+
+ insertAnimation(*obj);
+}
+
+void Animation::drawScene(Surface *surf) {
+
+ Common::List<AnimObj>::iterator it;
+
+ for (it = _animObjects.begin(); it != _animObjects.end(); ++it) {
+ if(it->_id == kOverlayImage) {
+ it->_frames[it->_currentFrame]->draw(surf, false);
+ }
+ else {
+ it->_frames[it->_currentFrame]->draw(surf, true);
+ }
+ }
+}
+
+void Animation::deleteAnimation(uint id) {
+
+ Common::List<AnimObj>::iterator it = getAnimation(id);
+
+ _animObjects.erase(it);
+}
+
+void Animation::deleteAll() {
+
+ _animObjects.clear();
}
+}