diff --git a/main.c b/main.c index 73660de..b3ae9b0 100644 --- a/main.c +++ b/main.c @@ -162,7 +162,7 @@ void Update(GameState *game, Camera2D *cam, float dt) { // Handle the attacking state, if not handle state transitions if (knight->state == KNIGHT_ATTACKING) { - if (game->anim_playbacks[i].is_finished) { + if (IsAnimationFinished(game->anim_playbacks[i])) { knight->state = KNIGHT_IDLE; PlayAnimation(ANIM_KNIGHT_IDLE, knight_anims, &game->anim_playbacks[i]); } @@ -254,6 +254,8 @@ void Draw(const GameState *game, Assets assets, Camera2D cam, float dt) { Vector2 world = GetScreenToWorld2D(GetMousePosition(), cam); Vector2 pointer_pos = Vector2Subtract(world, (Vector2){24, 19}); D_DrawTextureV(assets.textures[2], pointer_pos, WHITE); + + DrawFPS(1500, 10); } int main(void) { @@ -281,7 +283,7 @@ int main(void) { GameState game = {0}; game.knights = malloc(sizeof(Knight) * MAX_KNIGHTS); game.knights[0] = (Knight){0}; - game.knights[0].position = (Vector2){100,100}; + game.knights[0].position = (Vector2){400,150}; game.anim_playbacks = malloc(sizeof(SpriteAnimationPlayback) * MAX_KNIGHTS); game.anim_playbacks_count = 1; // First one is idle diff --git a/sprites.c b/sprites.c index 67d6d6b..02143c7 100644 --- a/sprites.c +++ b/sprites.c @@ -5,7 +5,6 @@ inline void PlayAnimation(int animation, SpriteAnimation *anims, SpriteAnimation playback->time_elapsed = 0.0f; playback->current_frame = 0; playback->row = animation; - playback->is_finished = false; playback->total_frames = anims[animation].total_frames; playback->loop = anims[animation].loop; } @@ -21,11 +20,12 @@ void TickSpriteAnimations(SpriteAnimationPlayback *playbacks, int len) { if (playback->current_frame >= playback->total_frames) { if (playback->loop) { playback->current_frame = 0; - } else { - playback->is_finished = true; - playback->current_frame--; } } } } } + +inline bool IsAnimationFinished(SpriteAnimationPlayback playback) { + return playback.current_frame == playback.total_frames; +} diff --git a/sprites.h b/sprites.h index 237296e..4692e65 100644 --- a/sprites.h +++ b/sprites.h @@ -4,12 +4,6 @@ #include "lib.h" #include "include/raylib.h" -// typedef struct { -// Texture2D texture; -// char *name; -// Size size; -// } SpriteSheet; - typedef struct { u8 loop; u8 total_frames; @@ -21,9 +15,8 @@ typedef struct { u8 total_frames; u8 current_frame; u8 loop; - // TODO: Maybe we can get rid of this one - u8 is_finished; } SpriteAnimationPlayback; void PlayAnimation(int animation, SpriteAnimation *anims, SpriteAnimationPlayback *playback); void TickSpriteAnimations(SpriteAnimationPlayback *playbacks, int len); +bool IsAnimationFinished(SpriteAnimationPlayback playback);