From 4bd61c269ff9984329b700f015e94bca89417bd7 Mon Sep 17 00:00:00 2001 From: Ricardo Cruz Date: Wed, 18 Aug 2004 10:32:26 +0000 Subject: [PATCH] Improvements. SVN-Revision: 1806 --- lib/special/sprite.cpp | 11 +++++------ lib/special/sprite.h | 5 ++++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/special/sprite.cpp b/lib/special/sprite.cpp index 6ffea6a04..7387e3dfd 100644 --- a/lib/special/sprite.cpp +++ b/lib/special/sprite.cpp @@ -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); diff --git a/lib/special/sprite.h b/lib/special/sprite.h index 4906aff5f..a5ddbff56 100644 --- a/lib/special/sprite.h +++ b/lib/special/sprite.h @@ -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; } -- 2.11.0