commit 0b33409cb0defb788ceb0a21f5ba77457ce0c01b
parent 7da4c330667c2712cba7cc96f2b6d5dc92a2a219
Author: beep <beep@wimdupont.com>
Date: Sat, 4 Apr 2026 17:15:33 +0000
Fix player down-facing sprite frame
Diffstat:
1 file changed, 17 insertions(+), 13 deletions(-)
diff --git a/src/game/main.c b/src/game/main.c
@@ -195,22 +195,26 @@ ph_draw_sprite(SDL_Renderer *renderer, SDL_Texture *texture,
SDL_RenderTextureRotated(renderer, texture, &src, &dst, 0.0, NULL, flip);
}
-static int
-ph_player_sprite_row(const PhEntity *entity)
+static void
+ph_player_sprite_frame(const PhEntityDef *def, const PhEntity *entity,
+ int *sprite_tile_x, int *sprite_tile_y, SDL_FlipMode *flip)
{
if (entity->facing_y > 0) {
- return 2;
+ *sprite_tile_x = def->sprite_tile_x + 4;
+ *sprite_tile_y = 0;
+ *flip = SDL_FLIP_NONE;
+ return;
}
if (entity->facing_y < 0) {
- return 0;
+ *sprite_tile_x = def->sprite_tile_x;
+ *sprite_tile_y = 0;
+ *flip = SDL_FLIP_NONE;
+ return;
}
- return 1;
-}
-static SDL_FlipMode
-ph_player_sprite_flip(const PhEntity *entity)
-{
- return entity->facing_x > 0 ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE;
+ *sprite_tile_x = def->sprite_tile_x;
+ *sprite_tile_y = 1;
+ *flip = entity->facing_x > 0 ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE;
}
static void
@@ -291,6 +295,7 @@ ph_draw_entities(SDL_Renderer *renderer, const PhAssets *assets, const PhWorld *
if (def->sprite_tile_x >= 0 && def->sprite_tile_y >= 0 &&
(def->kind == PH_ENTITY_PLAYER || def->kind == PH_ENTITY_MONSTER)) {
SDL_Texture *sheet = def->kind == PH_ENTITY_PLAYER ? assets->hero : assets->critters;
+ int sprite_tile_x = def->sprite_tile_x;
int sprite_tile_y = def->sprite_tile_y;
SDL_FlipMode flip = SDL_FLIP_NONE;
@@ -300,10 +305,9 @@ ph_draw_entities(SDL_Renderer *renderer, const PhAssets *assets, const PhWorld *
rect.h = 16.0f;
if (def->kind == PH_ENTITY_PLAYER) {
- sprite_tile_y = ph_player_sprite_row(entity);
- flip = ph_player_sprite_flip(entity);
+ ph_player_sprite_frame(def, entity, &sprite_tile_x, &sprite_tile_y, &flip);
}
- ph_draw_sprite(renderer, sheet, def->sprite_tile_x, sprite_tile_y, rect, flip);
+ ph_draw_sprite(renderer, sheet, sprite_tile_x, sprite_tile_y, rect, flip);
} else {
rect.x = entity->pos.x - world->camera.pos.x - 7.0f;
rect.y = entity->pos.y - world->camera.pos.y - 12.0f;