From ff49e7d2b3df06fb19ef642673dcf38c8e7786c0 Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Mon, 1 Jan 2024 09:58:51 +0700 Subject: [PATCH] Separate sprites into .c/.h files --- .gitignore | 1 + Makefile | 9 ++++++--- game_data.h | 10 +++++++++- lib.h | 5 +++-- sprites.c | 26 ++++++++++++++++++++++++++ sprites.h | 28 ++++------------------------ 6 files changed, 49 insertions(+), 30 deletions(-) create mode 100644 sprites.c diff --git a/.gitignore b/.gitignore index 86f1152..e239c13 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /deps/ *.aseprite /.idea/ +/sprites.o diff --git a/Makefile b/Makefile index f264ce9..2410568 100644 --- a/Makefile +++ b/Makefile @@ -5,10 +5,13 @@ CC=gcc all: main -main: main.c ./lib/libraylib.a - $(CC) $(CFLAGS) -Iinclude/ -lm main.c -o main ./lib/libraylib.a +main: main.c sprites.o sprites.h game_data.h ./lib/libraylib.a + $(CC) $(CFLAGS) -Iinclude/ -lm main.c -o main sprites.o ./lib/libraylib.a -run: main +sprites.o: sprites.c sprites.h lib.h + $(CC) $(CFLAGS) -c sprites.c -o sprites.o + +run: all ./main clean: diff --git a/game_data.h b/game_data.h index 856be63..da89716 100644 --- a/game_data.h +++ b/game_data.h @@ -53,7 +53,7 @@ SpriteAnimation knight_attack_front2 = { .src_rect = { 0, cell_size * 5, 192, 192 }, }; -Spriteanimation knight_attack_back1 = { +SpriteAnimation knight_attack_back1 = { .name = "attack_back1", .total_frames = 6, .src_rect = { 0, cell_size * 6, 192, 192 }, @@ -66,3 +66,11 @@ SpriteAnimation knight_attack_back2 = { }; SpriteAnimation knight_anims[8]; +// knight_anims[ANIM_KNIGHT_IDLE] = knight_idle; +// knight_anims[ANIM_KNIGHT_RUN] = knight_run; +// knight_anims[ANIM_KNIGHT_ATTACK_SIDE1] = knight_attack_side1; +// knight_anims[ANIM_KNIGHT_ATTACK_SIDE2] = knight_attack_side2; +// knight_anims[ANIM_KNIGHT_ATTACK_TOP1] = knight_attack_front1; +// knight_anims[ANIM_KNIGHT_ATTACK_TOP2] = knight_attack_front2; +// knight_anims[ANIM_KNIGHT_ATTACK_BACK1] = knight_attack_back1; +// knight_anims[ANIM_KNIGHT_ATTACK_BACK2] = knight_attack_back2; diff --git a/lib.h b/lib.h index cf1616e..f326b3e 100644 --- a/lib.h +++ b/lib.h @@ -1,6 +1,7 @@ #pragma once #include #include +#include "include/raylib.h" typedef uint8_t u8; // typedef char16_t c16; @@ -20,8 +21,8 @@ typedef size_t usize; typedef Vector2 Position; typedef struct Size { - float width; // Rectangle width - float height; // Rectangle height + float width; + float height; } Size; typedef struct Rect { diff --git a/sprites.c b/sprites.c new file mode 100644 index 0000000..8d230c0 --- /dev/null +++ b/sprites.c @@ -0,0 +1,26 @@ +#include "sprites.h" +#include "include/raylib.h" + +void PlayAnimation(SpriteAnimationPlayback *playbacks, SpriteAnimationPlayback playback) { + playback.time_elapsed = 0.0f; + playback.current_frame = 0; + playbacks[0] = playback; +} + +void TickSpriteAnimations(const SpriteAnimation *animations, + SpriteAnimationPlayback *playbacks, + int len) { + const f32 anim_speed = 1.0f / 10.0f; + for (int i = 0; i < len; i++) { + SpriteAnimationPlayback *playback = &playbacks[i]; + const SpriteAnimation *animation = &animations[playback->anim_id]; + playback->time_elapsed += GetFrameTime(); + if (playback->time_elapsed >= anim_speed) { + playback->time_elapsed = 0.0f; + playback->current_frame++; + if (playback->current_frame >= animation->total_frames) { + playback->current_frame = 0; + } + } + } +} diff --git a/sprites.h b/sprites.h index 55192c5..72b938f 100644 --- a/sprites.h +++ b/sprites.h @@ -1,7 +1,8 @@ +// sprites.h #pragma once #include "lib.h" -#include "raylib.h" +#include "include/raylib.h" typedef struct { Texture2D texture; @@ -21,26 +22,5 @@ typedef struct { f32 time_elapsed; } SpriteAnimationPlayback; -void PlayAnimation(SpriteAnimationPlayback *playbacks, SpriteAnimationPlayback playback) { - playback.time_elapsed = 0.0f; - playback.current_frame = 0; - playbacks[0] = playback; -} - -void TickSpriteAnimations(SpriteAnimation *animations, - SpriteAnimationPlayback *playbacks, - int len) { - const f32 anim_speed = 1.0f / 10.0f; - for (int i = 0; i < len; i++) { - SpriteAnimationPlayback *playback = &playbacks[i]; - SpriteAnimation *animation = &animations[playback->anim_id]; - playback->time_elapsed += GetFrameTime(); - if (playback->time_elapsed >= anim_speed) { - playback->time_elapsed = 0.0f; - playback->current_frame++; - if (playback->current_frame >= animation->total_frames) { - playback->current_frame = 0; - } - } - } -} +void PlayAnimation(SpriteAnimationPlayback *playbacks, SpriteAnimationPlayback playback); +void TickSpriteAnimations(const SpriteAnimation *animations, SpriteAnimationPlayback *playbacks, int len); \ No newline at end of file