[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