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/
|
/deps/
|
||||||
*.aseprite
|
*.aseprite
|
||||||
/.idea/
|
/.idea/
|
||||||
|
/sprites.o
|
||||||
|
9
Makefile
9
Makefile
@ -5,10 +5,13 @@ CC=gcc
|
|||||||
|
|
||||||
all: main
|
all: main
|
||||||
|
|
||||||
main: main.c ./lib/libraylib.a
|
main: main.c sprites.o sprites.h game_data.h ./lib/libraylib.a
|
||||||
$(CC) $(CFLAGS) -Iinclude/ -lm main.c -o main ./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
|
./main
|
||||||
|
|
||||||
clean:
|
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 },
|
.src_rect = { 0, cell_size * 5, 192, 192 },
|
||||||
};
|
};
|
||||||
|
|
||||||
Spriteanimation knight_attack_back1 = {
|
SpriteAnimation knight_attack_back1 = {
|
||||||
.name = "attack_back1",
|
.name = "attack_back1",
|
||||||
.total_frames = 6,
|
.total_frames = 6,
|
||||||
.src_rect = { 0, cell_size * 6, 192, 192 },
|
.src_rect = { 0, cell_size * 6, 192, 192 },
|
||||||
@ -66,3 +66,11 @@ SpriteAnimation knight_attack_back2 = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
SpriteAnimation knight_anims[8];
|
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
|
#pragma once
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
#include "include/raylib.h"
|
||||||
|
|
||||||
typedef uint8_t u8;
|
typedef uint8_t u8;
|
||||||
// typedef char16_t c16;
|
// typedef char16_t c16;
|
||||||
@ -20,8 +21,8 @@ typedef size_t usize;
|
|||||||
typedef Vector2 Position;
|
typedef Vector2 Position;
|
||||||
|
|
||||||
typedef struct Size {
|
typedef struct Size {
|
||||||
float width; // Rectangle width
|
float width;
|
||||||
float height; // Rectangle height
|
float height;
|
||||||
} Size;
|
} Size;
|
||||||
|
|
||||||
typedef struct Rect {
|
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
|
#pragma once
|
||||||
|
|
||||||
#include "lib.h"
|
#include "lib.h"
|
||||||
#include "raylib.h"
|
#include "include/raylib.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Texture2D texture;
|
Texture2D texture;
|
||||||
@ -21,26 +22,5 @@ typedef struct {
|
|||||||
f32 time_elapsed;
|
f32 time_elapsed;
|
||||||
} SpriteAnimationPlayback;
|
} SpriteAnimationPlayback;
|
||||||
|
|
||||||
void PlayAnimation(SpriteAnimationPlayback *playbacks, SpriteAnimationPlayback playback) {
|
void PlayAnimation(SpriteAnimationPlayback *playbacks, SpriteAnimationPlayback playback);
|
||||||
playback.time_elapsed = 0.0f;
|
void TickSpriteAnimations(const SpriteAnimation *animations, SpriteAnimationPlayback *playbacks, int len);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user