[Scummvm-cvs-logs] SF.net SVN: scummvm:[42075] scummvm/branches/gsoc2009-draci/engines/draci

dkasak13 at users.sourceforge.net dkasak13 at users.sourceforge.net
Fri Jul 3 21:05:58 CEST 2009


Revision: 42075
          http://scummvm.svn.sourceforge.net/scummvm/?rev=42075&view=rev
Author:   dkasak13
Date:     2009-07-03 19:05:58 +0000 (Fri, 03 Jul 2009)

Log Message:
-----------
Added support for playing and stopping animations.

Modified Paths:
--------------
    scummvm/branches/gsoc2009-draci/engines/draci/animation.cpp
    scummvm/branches/gsoc2009-draci/engines/draci/animation.h

Modified: scummvm/branches/gsoc2009-draci/engines/draci/animation.cpp
===================================================================
--- scummvm/branches/gsoc2009-draci/engines/draci/animation.cpp	2009-07-03 19:02:08 UTC (rev 42074)
+++ scummvm/branches/gsoc2009-draci/engines/draci/animation.cpp	2009-07-03 19:05:58 UTC (rev 42075)
@@ -28,16 +28,31 @@
 
 namespace Draci {
 
-void Animation::addAnimation(uint id, uint z) {
+void Animation::addAnimation(uint id, uint z, bool playing) {
 	
 	AnimObj *obj = new AnimObj();
 	obj->_id = id;
 	obj->_z = z;
 	obj->_currentFrame = 0;
+	obj->_playing = playing;
 
 	insertAnimation(*obj);
 }
 
+void Animation::play(uint id) {
+
+	AnimObj &obj = *getAnimation(id);
+
+	obj._playing = true;
+}
+
+void Animation::stop(uint id) {
+
+	AnimObj &obj = *getAnimation(id);
+
+	obj._playing = false;
+}
+
 Common::List<AnimObj>::iterator Animation::getAnimation(uint id) {
 	
 	Common::List<AnimObj>::iterator it;
@@ -75,6 +90,7 @@
 	obj->_id = kOverlayImage;
 	obj->_z = z;
 	obj->_currentFrame = 0;
+	obj->_playing = true;
 	obj->_frames.push_back(overlay);
 
 	insertAnimation(*obj);
@@ -85,7 +101,11 @@
 	Common::List<AnimObj>::iterator it;
 
 	for (it = _animObjects.begin(); it != _animObjects.end(); ++it) {
-		if(it->_id == kOverlayImage) {			
+		if (!it->_playing) {
+			continue;
+		}	
+	
+		if (it->_id == kOverlayImage) {			
 			it->_frames[it->_currentFrame]->draw(surf, false);
 		}
 		else {
@@ -98,7 +118,7 @@
 	
 	Common::List<AnimObj>::iterator it = getAnimation(id);
 
-	for(uint i = 0; i < it->_frames.size(); ++i) {		
+	for (uint i = 0; i < it->_frames.size(); ++i) {		
 		delete it->_frames[i];
 	}
 
@@ -110,7 +130,7 @@
 	Common::List<AnimObj>::iterator it;
 
 	for (it = _animObjects.begin(); it != _animObjects.end(); ++it) {
-		for(uint i = 0; i < it->_frames.size(); ++i) {		
+		for (uint i = 0; i < it->_frames.size(); ++i) {		
 			delete it->_frames[i];
 		}	
 	}

Modified: scummvm/branches/gsoc2009-draci/engines/draci/animation.h
===================================================================
--- scummvm/branches/gsoc2009-draci/engines/draci/animation.h	2009-07-03 19:02:08 UTC (rev 42074)
+++ scummvm/branches/gsoc2009-draci/engines/draci/animation.h	2009-07-03 19:05:58 UTC (rev 42075)
@@ -38,6 +38,7 @@
 	uint _id;	
 	uint _currentFrame;
 	uint _z;
+	bool _playing;	
 	Common::Array<Drawable*> _frames;
 };
 
@@ -47,12 +48,18 @@
 	Animation(DraciEngine *vm) : _vm(vm) {};
 	~Animation() { deleteAll(); }
 
-	void addAnimation(uint id, uint z = 0);
+	void addAnimation(uint id, uint z, bool playing = false);
 	void addFrame(uint id, Drawable *frame);
-	void addOverlay(Drawable *overlay, uint z = 0);
+	void addOverlay(Drawable *overlay, uint z);
+	
+	void play(uint id);
+	void stop(uint id);
+
 	void deleteAnimation(uint id);
 	void deleteAll();
+
 	void drawScene(Surface *surf);
+
 	Common::List<AnimObj>::iterator getAnimation(uint id);
 
 private:


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list