00001
#ifndef DEF_ANIMATION_H
00002
#define DEF_ANIMATION_H 1
00003
00004
class EmptyAnimation {
00005
public:
00006 EmptyAnimation(EmptyAnimationPtr* afallback=NULL);
00007
virtual ~EmptyAnimation() { }
00008
virtual void setBasePos(SDL_Rect*);
00009
virtual void unsetBasePos();
00010
virtual void runAnim();
00011
virtual bool updateAnim(Uint16);
00012
virtual Frame getFrame() const;
00013 virtual SDL_Rect getDrawPos() const;
00014 virtual SDL_Rect getFrameDim() const;
00015 virtual
Frame getBaseFrame() const;
00016 virtual
bool isValid() const;
00017 virtual
bool isRunning() const;
00018 virtual
bool isImage() const;
00019 virtual
bool isFixed() const;
00020 virtual
void setFallBack(EmptyAnimationPtr* newfallback=NULL);
00021 protected:
00022
Frame base_frame;
00023 private:
00024 EmptyAnimationPtr* fallback;
00025 };
00026
00030 class
Animation : public EmptyAnimation {
00031
public:
00042
Animation(
const Image& abase_image,
00043 Uint16 aframes=1,
00044 BasePointType abp_type=BP_MD,
00045 Uint16 aanimation_type=ATYPE_LOOP,
00046
double afps=0,
00047 Uint16 astart_pos=0,
00048 AllignType aallign_type=AT_MD);
00049
Animation();
00050
virtual ~
Animation();
00052 virtual void setBasePos(SDL_Rect* abase_pos) {
00053 base_pos=abase_pos;
00054 checkAnim();
00055 }
00057 virtual void unsetBasePos() {
00058 base_pos=NULL;
00059 }
00061
virtual void runAnim();
00064
virtual bool updateAnim(Uint16 dt);
00066
virtual Frame getFrame() const;
00069 virtual SDL_Rect getDrawPos() const;
00071 virtual SDL_Rect getFrameDim() const;
00073 virtual
Frame getBaseFrame() const;
00075 virtual
bool isValid()
const {
00076
return is_valid;
00077 }
00079 virtual bool isRunning()
const {
00080
return is_running;
00081 }
00083 virtual bool isImage()
const {
00084
return is_image;
00085 }
00087 virtual bool isFixed()
const {
00088
return is_fixed;
00089 }
00090
virtual void setFallBack(EmptyAnimationPtr*) { }
00091
protected:
00093
void setShift();
00095
bool stopAnim();
00097
bool checkAnim();
00098
protected:
00100 Image base_image;
00102 Uint16 frames;
00111 BasePointType bp_type;
00116 Uint16 animation_type;
00118 double fps;
00120 Uint16 start_pos;
00130 AllignType allign_type;
00131
00132
00134 SDL_Rect* base_pos;
00136 Sint16 shift_x;
00137 Sint16 shift_y;
00139 Uint32 duration;
00141 Uint16 base_frame_pos;
00143 Uint16 end_pos;
00145 bool is_image;
00147 bool is_valid;
00149 bool is_fixed;
00150
00151
00153 bool is_running;
00155 bool forward;
00157 Uint16 cur_frame_num;
00159 Uint32 cur_time;
00160 };
00161
00162
#endif