Improvements.
authorRicardo Cruz <rick2@aeiou.pt>
Wed, 18 Aug 2004 10:32:26 +0000 (10:32 +0000)
committerRicardo Cruz <rick2@aeiou.pt>
Wed, 18 Aug 2004 10:32:26 +0000 (10:32 +0000)
SVN-Revision: 1806

lib/special/sprite.cpp
lib/special/sprite.h

index 6ffea6a..7387e3d 100644 (file)
@@ -130,9 +130,9 @@ return animation_loops;
 }
 
 void
-Sprite::reverse_animation()
+Sprite::reverse_animation(bool reverse)
 {
-animation_reversed = !animation_reversed;
+animation_reversed = reverse;
 
 if(animation_reversed)
   frame = get_frames()-1;
@@ -147,14 +147,13 @@ if(animation_loops == 0)
   return;
 
 float frame_inc = (action->fps/1000.0) * (SDL_GetTicks() - last_tick);
+last_tick = SDL_GetTicks();
 
 if(animation_reversed)
   frame -= frame_inc;
 else
   frame += frame_inc;
 
-last_tick = SDL_GetTicks();
-
 if(animation_reversed)
   {
   float excedent = frame - 0;
@@ -164,7 +163,7 @@ if(animation_reversed)
     if(animation_loops > 0)
       {
       animation_loops--;
-      if(animation_loops == 0)
+      if(animation_loops == 0 && !next_action.empty())
         {
         set_action(next_action);
         start_animation(-1);
@@ -184,7 +183,7 @@ else
     if(animation_loops > 0)
       {
       animation_loops--;
-      if(animation_loops == 0)
+      if(animation_loops == 0 && !next_action.empty())
         {
         set_action(next_action);
         start_animation(-1);
index 4906aff..a5ddbff 100644 (file)
@@ -66,10 +66,13 @@ namespace SuperTux
           0  - stopped
           1,2,3  - one, two, three times... */
       void start_animation(int loops);
+      /* Stop animation */
+      void stop_animation()
+        { start_animation(0); }
       /** Check if animation is stopped or not */
       bool check_animation();
       /** Reverse the animation */
-      void reverse_animation();
+      void reverse_animation(bool reverse);
 
       float get_fps()
         { return action->fps; }