Separate sprites into .c/.h files
This commit is contained in:
parent
a0126529de
commit
ff49e7d2b3
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,3 +2,4 @@
|
||||
/deps/
|
||||
*.aseprite
|
||||
/.idea/
|
||||
/sprites.o
|
||||
|
9
Makefile
9
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:
|
||||
|
10
game_data.h
10
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;
|
||||
|
5
lib.h
5
lib.h
@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#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 {
|
||||
|
26
sprites.c
Normal file
26
sprites.c
Normal file
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
28
sprites.h
28
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);
|
Loading…
x
Reference in New Issue
Block a user