Sprite::Sprite(SDL_Surface *screen, std::string name, Animation *anim) :
mFrame(0),
+ mCurrentAnimation(0),
mDrawn(0),
mVisible(true),
mLastUpdate(0),
- mSpriteAnimation(anim),
mScreen(screen)
{
//later add a part that adds name to list of level sprites
//Game.Level.SpriteList.pushback(name);
- if(mSpriteAnimation -> mBuilt)
+ mSpriteAnimations.push_back(anim);
+ if(mSpriteAnimations[mCurrentAnimation] -> mBuilt)
{
- if (mSpriteAnimation->mNumFrames > 1) mAnimating = 1;
+ if (mSpriteAnimations[mCurrentAnimation]->mNumFrames > 1) mAnimating = 1;
}
}
void Sprite::draw()
{
if(mAnimating == 1) {
- if(mLastUpdate+mSpriteAnimation->mAnim[mFrame].pause*mSpeed<SDL_GetTicks()) {
+ if(mLastUpdate+mSpriteAnimations[mCurrentAnimation]->mAnim[mFrame].pause*mSpeed<SDL_GetTicks()) {
mFrame++;
- if(mFrame > mSpriteAnimation->mNumFrames-1) mFrame=0;
+ if(mFrame > mSpriteAnimations[mCurrentAnimation]->mNumFrames-1) mFrame=0;
mLastUpdate = SDL_GetTicks();
}
}
dest.x = mX;
dest.y = mY;
if(mVisible == true)
- SDL_BlitSurface(mSpriteAnimation->mAnim[mFrame].image,NULL,mScreen,&dest);
+ SDL_BlitSurface(mSpriteAnimations[mCurrentAnimation]->mAnim[mFrame].image,NULL,mScreen,&dest);
}
#define SPRITE
#include "Animation.h"
#include <SDL/SDL.h>
+#include <vector>
class Sprite
{
public:
Sprite(SDL_Surface *screen, std::string name, Animation *anim);
void draw();
-
+ void setAnimation(int animation){ mCurrentAnimation = animation; }
+ int getAnimation(){ return mCurrentAnimation; }
void setFrame(int frame) { mFrame = frame; }
int getFrame() { return mFrame; }
void setSpeed(float speed) {mSpeed = speed;}
private:
std::string mName;
int mFrame;
- int mX,mY,mOldX, mOldY;
- bool mAnimating;
+ int mX,mY;
+ bool mAnimating;
+ int mCurrentAnimation;
bool mDrawn;
bool mVisible;
int mAnimation;
float mSpeed;
long mLastUpdate;
- Animation *mSpriteAnimation;
+ std::vector<Animation*> mSpriteAnimations;
SDL_Surface *mScreen;
int ZOrder;
};