Initialize knight_anims statically so it survives hot reloads
This commit is contained in:
parent
7e1748d3b4
commit
78b4b739e6
11
game.cpp
11
game.cpp
@ -13,15 +13,6 @@ using namespace std;
|
||||
#include "game_data.h"
|
||||
|
||||
GameState *InitState() {
|
||||
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;
|
||||
|
||||
Assets assets = {};
|
||||
assets.textures = (Texture*)malloc(sizeof(Texture2D) * TEXTURES_BUF_SIZE);
|
||||
assets.textures[TEX_GROUND] = LoadTexture("./assets/Terrain/Ground/Tilemap_Flat.png");
|
||||
@ -43,7 +34,7 @@ GameState *InitState() {
|
||||
game->knights[i].position = {rand_x,rand_y};
|
||||
|
||||
PlayAnimation(ANIM_KNIGHT_IDLE, knight_anims, &game->anim_playbacks[i]);
|
||||
int rand_frame = GetRandomValue(0, knight_anims[ANIM_KNIGHT_IDLE].total_frames);
|
||||
int rand_frame = GetRandomValue(0, knight_anims[ANIM_KNIGHT_IDLE].total_frames - 1);
|
||||
game->anim_playbacks[i].current_frame = rand_frame;
|
||||
}
|
||||
game->entity_count = entities;
|
||||
|
||||
64
game_data.h
64
game_data.h
@ -14,13 +14,6 @@
|
||||
#define ANIM_KNIGHT_ATTACK_BACK1 6
|
||||
#define ANIM_KNIGHT_ATTACK_BACK2 7
|
||||
|
||||
// SpriteSheet knight_spritesheet = {
|
||||
// .name = "blue_knight",
|
||||
// .texture = {0},
|
||||
// // .anim_count = 8,
|
||||
// .size = { 1152, 1536 },
|
||||
// };
|
||||
|
||||
const u16 knight_sprite_size = 192;
|
||||
const Vector2 knight_origin = {knight_sprite_size / 2, knight_sprite_size / 2 + 35};
|
||||
const Size knight_col_size = {50, 75};
|
||||
@ -32,52 +25,13 @@ const Rectangle knight_colrect_select = {
|
||||
knight_col_size.height,
|
||||
};
|
||||
|
||||
SpriteAnimation knight_idle = {
|
||||
.loop = true,
|
||||
.total_frames = 6,
|
||||
SpriteAnimation knight_anims[8] = {
|
||||
{.loop = true, .total_frames = 6}, // ANIM_KNIGHT_IDLE
|
||||
{.loop = true, .total_frames = 6}, // ANIM_KNIGHT_RUN
|
||||
{.loop = false, .total_frames = 6}, // ANIM_KNIGHT_ATTACK_SIDE1
|
||||
{.loop = false, .total_frames = 6}, // ANIM_KNIGHT_ATTACK_SIDE2
|
||||
{.loop = false, .total_frames = 6}, // ANIM_KNIGHT_ATTACK_TOP1
|
||||
{.loop = false, .total_frames = 6}, // ANIM_KNIGHT_ATTACK_TOP2
|
||||
{.loop = false, .total_frames = 6}, // ANIM_KNIGHT_ATTACK_BACK1
|
||||
{.loop = false, .total_frames = 6}, // ANIM_KNIGHT_ATTACK_BACK2
|
||||
};
|
||||
|
||||
SpriteAnimation knight_run = {
|
||||
.loop = true,
|
||||
.total_frames = 6,
|
||||
};
|
||||
|
||||
SpriteAnimation knight_attack_side1 = {
|
||||
.loop = false,
|
||||
.total_frames = 6,
|
||||
};
|
||||
|
||||
SpriteAnimation knight_attack_side2 = {
|
||||
.loop = false,
|
||||
.total_frames = 6,
|
||||
};
|
||||
|
||||
SpriteAnimation knight_attack_front1 = {
|
||||
.loop = false,
|
||||
.total_frames = 6,
|
||||
};
|
||||
|
||||
SpriteAnimation knight_attack_front2 = {
|
||||
.loop = false,
|
||||
.total_frames = 6,
|
||||
};
|
||||
|
||||
SpriteAnimation knight_attack_back1 = {
|
||||
.loop = false,
|
||||
.total_frames = 6,
|
||||
};
|
||||
|
||||
SpriteAnimation knight_attack_back2 = {
|
||||
.loop = false,
|
||||
.total_frames = 6,
|
||||
};
|
||||
|
||||
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;
|
||||
|
||||
@ -15,6 +15,7 @@ struct SpriteAnimationPlayback {
|
||||
u8 total_frames;
|
||||
u8 current_frame;
|
||||
u8 loop;
|
||||
u8 finished;
|
||||
};
|
||||
|
||||
void PlayAnimation(int animation, SpriteAnimation *anims, SpriteAnimationPlayback *playback);
|
||||
@ -27,6 +28,7 @@ inline void PlayAnimation(int animation, SpriteAnimation *anims, SpriteAnimation
|
||||
playback->row = animation;
|
||||
playback->total_frames = anims[animation].total_frames;
|
||||
playback->loop = anims[animation].loop;
|
||||
playback->finished = false;
|
||||
}
|
||||
|
||||
void TickSpriteAnimations(SpriteAnimationPlayback *playbacks, int len) {
|
||||
@ -41,11 +43,12 @@ void TickSpriteAnimations(SpriteAnimationPlayback *playbacks, int len) {
|
||||
if (playback->loop) {
|
||||
playback->current_frame = 0;
|
||||
}
|
||||
playback->finished = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline bool IsAnimationFinished(SpriteAnimationPlayback playback) {
|
||||
return playback.current_frame == playback.total_frames;
|
||||
return playback.finished;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user