2017-11-30 21:00:47 +01:00
|
|
|
#include "sprite.h"
|
|
|
|
#include "util.h"
|
|
|
|
|
|
|
|
static
|
|
|
|
Sprite* sprite_create_default()
|
|
|
|
{
|
|
|
|
Position pos = { 0, 0 };
|
|
|
|
|
|
|
|
Sprite *s = ec_malloc(sizeof(Sprite));
|
|
|
|
*s = (Sprite) { NULL, pos, NULL };
|
|
|
|
|
|
|
|
return s;
|
|
|
|
}
|
|
|
|
|
|
|
|
Sprite* sprite_create()
|
|
|
|
{
|
|
|
|
return sprite_create_default();
|
|
|
|
}
|
|
|
|
|
|
|
|
void sprite_load_texture(Sprite *sprite, char *path, SDL_Renderer *renderer)
|
|
|
|
{
|
|
|
|
if (sprite->texture != NULL) {
|
|
|
|
texture_destroy(sprite->texture);
|
|
|
|
sprite->texture = NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
sprite->texture = texture_create(path, renderer);
|
|
|
|
}
|
|
|
|
|
2017-12-01 16:03:19 +01:00
|
|
|
void sprite_render(Sprite *s, Camera *cam)
|
2017-11-30 21:00:47 +01:00
|
|
|
{
|
2017-12-01 16:03:19 +01:00
|
|
|
Position cameraPos = camera_to_camera_position(cam, &s->pos);
|
2017-11-30 21:00:47 +01:00
|
|
|
SDL_Rect draw_box = (SDL_Rect) {
|
2017-12-01 16:03:19 +01:00
|
|
|
cameraPos.x,
|
|
|
|
cameraPos.y,
|
2017-11-30 21:00:47 +01:00
|
|
|
s->texture->dim.width,
|
|
|
|
s->texture->dim.height
|
|
|
|
};
|
|
|
|
|
2017-12-01 16:03:19 +01:00
|
|
|
SDL_RenderCopy(cam->renderer,
|
2017-11-30 21:00:47 +01:00
|
|
|
s->texture->texture,
|
|
|
|
&s->texture->clip,
|
|
|
|
&draw_box);
|
|
|
|
}
|
|
|
|
|
|
|
|
void sprite_destroy(Sprite *sprite)
|
|
|
|
{
|
|
|
|
if (sprite->texture)
|
|
|
|
texture_destroy(sprite->texture);
|
|
|
|
free(sprite);
|
|
|
|
}
|