sprites now support specifying flip

pull/5/head
Sara 2023-05-14 15:04:29 +02:00
parent ce4638d1e9
commit 89db4253ae
2 changed files with 8 additions and 3 deletions

View File

@ -84,7 +84,7 @@ void _exec_sprite_cmd(const drawcmd_t* cmd) {
SDL_FPoint origin = {destrect.w * sprite->origin.x, destrect.h * sprite->origin.y};
SDL_RenderCopyExF(g_context.renderer, sprite->texture,
&sprite->uv, &destrect, sprite->rot,
&origin, SDL_FLIP_NONE);
&origin, sprite->flip);
}
static
@ -278,6 +278,7 @@ sprite_t render_text(const char* str, SDL_FRect area, text_style_t style) {
.x=area.x, .y=area.y,
.texture=t,
.uv=srcr,
.flip=SDL_FLIP_NONE,
};
}
return (sprite_t) {
@ -286,7 +287,8 @@ sprite_t render_text(const char* str, SDL_FRect area, text_style_t style) {
.sx=0, .sy=0,
.texture=NULL,
.uv={0,0,0,0},
.x=0,.y=0
.x=0,.y=0,
.flip=SDL_FLIP_NONE,
};
}
@ -443,7 +445,8 @@ sprite_t make_sprite(const char* file, float x, float y) {
.sx=1.0,.sy=1.0,
.rot=0,
.depth=RLAYER_SPRITES,
.uv=(SDL_Rect){0,0,0,0}
.uv=(SDL_Rect){0,0,0,0},
.flip=SDL_FLIP_NONE,
};
SDL_QueryTexture(sprite.texture, NULL, NULL, &sprite.uv.w, &sprite.uv.h);
sprite.origin.x = -(float)sprite.uv.h/2.f; sprite.origin.y = -(float)sprite.uv.h/2.f;
@ -460,6 +463,7 @@ sprite_t sprite_from_spritesheet(spritesheet_t *sheet, int index) {
.rot=0,
.depth=RLAYER_SPRITES,
.uv=rect,
.flip=SDL_FLIP_NONE,
};
}

View File

@ -55,6 +55,7 @@ typedef struct sprite_t {
float rot; // rotation around origin of the sprite
depth_t depth; // depth to render at, lower is on top, higher is on bottom
SDL_Rect uv; // the source rect to render from the texture
SDL_RendererFlip flip; // the flipped state of the sprite
} sprite_t; // a drawable and transformable texture sprite
typedef struct rectshape_t {