From 000fa9d480284cfec3e1091105698400698da710 Mon Sep 17 00:00:00 2001 From: Ricardo Cruz Date: Tue, 17 Aug 2004 23:01:58 +0000 Subject: [PATCH] Added next action to sprite. SVN-Revision: 1799 --- lib/special/sprite.cpp | 21 +++++++++++++++++++-- lib/special/sprite.h | 6 ++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/lib/special/sprite.cpp b/lib/special/sprite.cpp index cc9482195..be2b81f8e 100644 --- a/lib/special/sprite.cpp +++ b/lib/special/sprite.cpp @@ -103,10 +103,12 @@ action = i->second; } void -Sprite::start_animation(int loops) +Sprite::start_animation(int loops, std::string next_act) { -animation_loops = loops; reset(); +animation_loops = loops; +if(!next_act.empty()) + next_action = next_act; } void @@ -115,6 +117,7 @@ Sprite::reset() frame = 0; last_tick = SDL_GetTicks(); animation_reversed = true; +next_action.clear(); } bool @@ -156,7 +159,14 @@ if(animation_reversed) { // last case can happen when not used reverse_animation() frame = get_frames() - 1; if(animation_loops > 0) + { animation_loops--; + if(animation_loops == 0) + { + set_action(next_action); + start_animation(-1); + } + } if(fabsf(excedent) < get_frames()) frame += excedent; @@ -169,7 +179,14 @@ else { frame = 0; if(animation_loops > 0) + { animation_loops--; + if(animation_loops == 0) + { + set_action(next_action); + start_animation(-1); + } + } if(excedent < get_frames()) frame += excedent; diff --git a/lib/special/sprite.h b/lib/special/sprite.h index fdf83a5af..54f347641 100644 --- a/lib/special/sprite.h +++ b/lib/special/sprite.h @@ -64,8 +64,9 @@ namespace SuperTux /* Start an animation -1 - for infinite 0 - stopped - 1,2,3 - one, two, three times... */ - void start_animation(int loops); + 1,2,3 - one, two, three times... + If next_act specified, that action will be used when animation ends. */ + void start_animation(int loops, std::string next_act = ""); /** Check if animation is stopped or not */ bool check_animation(); /** Reverse the animation */ @@ -116,6 +117,7 @@ namespace SuperTux Actions actions; Action* action; + std::string next_action; }; } //namespace SuperTux -- 2.11.0