Initial version, load default FEN, displays for 5 seconds and closes
This commit is contained in:
+43
@@ -0,0 +1,43 @@
|
||||
#include "sprites.hpp"
|
||||
|
||||
SDL_Surface* Sprite::sheet = nullptr;
|
||||
|
||||
int Sprite::get(Piece piece, SDL_Surface* dest_surface)
|
||||
{
|
||||
return get(piece.get_team(), piece.get_type(), piece.get_vis(), dest_surface);
|
||||
}
|
||||
|
||||
int Sprite::get(Team team, Type type, Visibility vis, SDL_Surface* dest_surface)
|
||||
{
|
||||
if (nullptr == sheet)
|
||||
{
|
||||
load();
|
||||
}
|
||||
|
||||
if (NO_TYPE == type || NO_TEAM == team || VIS_NONE == vis)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
SDL_Rect dest_rect{0,0,45,45};
|
||||
SDL_Rect src_rect{type*45,team*45+vis*90,45,45};
|
||||
SDL_BlitSurface(sheet, &src_rect, dest_surface, &dest_rect);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Sprite::close()
|
||||
{
|
||||
if (nullptr != sheet)
|
||||
{
|
||||
SDL_FreeSurface(sheet);
|
||||
sheet = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void Sprite::load()
|
||||
{
|
||||
close();
|
||||
sheet = SDL_LoadBMP("Chess_Pieces_Sprite.bmp");
|
||||
SDL_SetColorKey(sheet, SDL_TRUE, SDL_MapRGB(sheet->format, 0xFF, 0, 0xFF));
|
||||
}
|
||||
Reference in New Issue
Block a user