1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| #include "Sprite.h"
CSprite::CSprite(const std::string &file, SDL_Renderer *ren)
{
SpriteW=32, SpriteH=56;
CharacterSpriteSheet = SDL_CreateTexture(ren, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STATIC, 1, 1);
CharacterSpriteSheet = IMG_LoadTexture(ren,file.c_str());
SurfaceTemp =IMG_Load(file.c_str());
SDL_SetColorKey( SurfaceTemp, SDL_TRUE, SDL_MapRGB( SurfaceTemp->format, 0x62, 0x7C, 0x4C ) );
CharacterSpriteSheet = SDL_CreateTextureFromSurface( ren, SurfaceTemp );
Character = SDL_CreateTexture(ren, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET,500, 500);
////Setup the clips for our image
clips[0].x = 2 + SpriteW;
clips[0].y = 1;
clips[0].w = SpriteW;
clips[0].h = SpriteH;
for (int i = 1; i < 6; i++)
{
clips[i].x = i + (i-1)*SpriteW;
clips[i].y = 3 + 2*SpriteH;
clips[i].w = SpriteW;
clips[i].h = SpriteH;
}
}
CSprite::~CSprite(void)
{
SDL_FreeSurface(SurfaceTemp);
}
void CSprite::DisplaySpriteSheet(SDL_Renderer *ren)
{
SDL_RenderCopy(ren, CharacterSpriteSheet, nullptr, nullptr);
}
void CSprite::DisplayCharacter( SDL_Renderer *ren)
{
for (int j = 0; j < 6; j++)
{
SDL_SetRenderTarget(ren,Character);
SDL_RenderCopy(ren, CharacterSpriteSheet, &clips[j], &CharacterPos);
SDL_RenderPresent(ren);
SDL_Delay(1000);
SDL_RenderClear(ren);
SDL_SetRenderTarget(ren,nullptr);
}
}
void CSprite::Animation(SDL_Texture *CharacterSpriteSheet, SDL_Texture *CharacterSprite)
{
} |
Partager