void Level::DrawSprites()
{
for (size_t i=0; i<mSprites.size(); ++i) {
- mSprites[i]->clearBG();
- }
- for (size_t i=0; i<mSprites.size(); ++i) {
- mSprites[i]->updateBG();
- }
- for (size_t i=0; i<mSprites.size(); ++i) {
mSprites[i]->draw();
}
}
}
}
-void Sprite::clearBG()
-{
- if(mDrawn ==1)
- {
- SDL_Rect dest;
- dest.x = mOldX;
- dest.y = mOldY;
- dest.w = mSpriteAnimation->mW;
- dest.h = mSpriteAnimation->mH;
- SDL_BlitSurface(mBackReplacement,NULL,mScreen,&dest);
- }
-}
-
-void Sprite::updateBG()
-{
- SDL_Rect srcrect;
- srcrect.w = mSpriteAnimation->mW;
- srcrect.h = mSpriteAnimation->mH;
- srcrect.x = mX;
- srcrect.y = mY;
- mOldX = mX;
- mOldY = mY;
- SDL_BlitSurface(mScreen,&srcrect,mBackReplacement,NULL);
-}
-
void Sprite::draw()
{
- if(mAnimating ==1)
- {
- if(mLastUpdate+mSpriteAnimation->mAnim[mFrame].pause*mSpeed<SDL_GetTicks())
- {
+ if(mAnimating == 1) {
+ if(mLastUpdate+mSpriteAnimation->mAnim[mFrame].pause*mSpeed<SDL_GetTicks()) {
mFrame++;
if(mFrame > mSpriteAnimation->mNumFrames-1) mFrame=0;
mLastUpdate = SDL_GetTicks();
}
}
- if(mDrawn == 0)
- {
+ if(mDrawn == 0) {
mDrawn=1;
mFrame=0;
}
public:
Sprite(SDL_Surface *screen, std::string name, Animation *anim);
void draw();
- void clearBG();
- void updateBG();
+
void setFrame(int frame) { mFrame = frame; }
int getFrame() { return mFrame; }
void setSpeed(float speed) {mSpeed = speed;}