Add horizontal flip to sprites
parent
d2de5cfed9
commit
b1a6430eb7
|
@ -43,8 +43,8 @@ int main(void)
|
|||
DrawTextEx(*fnt, "Press C to play a sound", (Vector2){64, 64}, 24, 1, RED);
|
||||
|
||||
// Draw the static Sprite and animated Sprite
|
||||
draw_sprite(spr, (Vector2){64,128});
|
||||
draw_sprite(spr2, (Vector2){64,180});
|
||||
draw_sprite(spr, (Vector2){64,128}, false);
|
||||
draw_sprite(spr2, (Vector2){64,180}, true);
|
||||
EndDrawing();
|
||||
|
||||
// Update the animated Sprite
|
||||
|
|
|
@ -53,7 +53,7 @@ static void level_scene_render_func(Scene_t* scene)
|
|||
|
||||
if (data->tile_sprites[tilemap.tiles[i].tile_type] != NULL)
|
||||
{
|
||||
draw_sprite(data->tile_sprites[tilemap.tiles[i].tile_type], (Vector2){x,y});
|
||||
draw_sprite(data->tile_sprites[tilemap.tiles[i].tile_type], (Vector2){x,y}, false);
|
||||
}
|
||||
else if (tilemap.tiles[i].tile_type == SOLID_TILE)
|
||||
{
|
||||
|
@ -126,7 +126,7 @@ static void level_scene_render_func(Scene_t* scene)
|
|||
if (spr.sprite != NULL)
|
||||
{
|
||||
Vector2 pos = Vector2Add(p_ct->position, spr.offset);
|
||||
draw_sprite(spr.sprite, pos);
|
||||
draw_sprite(spr.sprite, pos, p_cspr->flip_x);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -124,14 +124,14 @@ typedef struct _SpriteRenderInfo
|
|||
{
|
||||
Sprite_t* sprite;
|
||||
Vector2 offset;
|
||||
bool flip_x;
|
||||
bool flip_y;
|
||||
} SpriteRenderInfo_t;
|
||||
|
||||
typedef struct _CSprite_t {
|
||||
SpriteRenderInfo_t* sprites;
|
||||
sprite_transition_func_t transition_func;
|
||||
unsigned int current_idx;
|
||||
bool flip_x;
|
||||
bool flip_y;
|
||||
} CSprite_t;
|
||||
|
||||
static inline void set_bbox(CBBox_t* p_bbox, unsigned int x, unsigned int y)
|
||||
|
|
|
@ -151,12 +151,12 @@ Font* get_font(Assets_t* assets, const char* name)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
void draw_sprite(Sprite_t* spr, Vector2 pos)
|
||||
void draw_sprite(Sprite_t* spr, Vector2 pos, bool flip_x)
|
||||
{
|
||||
Rectangle rec = {
|
||||
spr->origin.x + spr->frame_size.x * spr->current_frame,
|
||||
spr->origin.y,
|
||||
spr->frame_size.x,
|
||||
spr->frame_size.x * (flip_x ? -1:1),
|
||||
spr->frame_size.y
|
||||
};
|
||||
DrawTextureRec(*spr->texture, rec, pos, WHITE);
|
||||
|
|
|
@ -28,5 +28,5 @@ Sprite_t* get_sprite(Assets_t* assets, const char* name);
|
|||
Sound* get_sound(Assets_t* assets, const char* name);
|
||||
Font* get_font(Assets_t* assets, const char* name);
|
||||
|
||||
void draw_sprite(Sprite_t* spr, Vector2 pos);
|
||||
void draw_sprite(Sprite_t* spr, Vector2 pos, bool flip_x);
|
||||
#endif // __ASSETS_H
|
||||
|
|
|
@ -16,6 +16,9 @@ static SpriteRenderInfo_t player_sprite_map[N_PLAYER_SPRITES] = {0};
|
|||
static unsigned int player_sprite_transition_func(Entity_t* ent)
|
||||
{
|
||||
CTransform_t* p_ctrans = get_component(ent, CTRANSFORM_COMP_T);
|
||||
CSprite_t* p_spr = get_component(ent, CSPRITE_T);
|
||||
if (p_ctrans->velocity.x > 0) p_spr->flip_x = true;
|
||||
else if (p_ctrans->velocity.x < 0) p_spr->flip_x = false;
|
||||
if (Vector2LengthSqr(p_ctrans->velocity) > 10000.0f)
|
||||
{
|
||||
return SPR_PLAYER_RUN;
|
||||
|
|
Loading…
Reference in New Issue