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"
|
#include "game_data.h"
|
||||||
|
|
||||||
GameState *InitState() {
|
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 assets = {};
|
||||||
assets.textures = (Texture*)malloc(sizeof(Texture2D) * TEXTURES_BUF_SIZE);
|
assets.textures = (Texture*)malloc(sizeof(Texture2D) * TEXTURES_BUF_SIZE);
|
||||||
assets.textures[TEX_GROUND] = LoadTexture("./assets/Terrain/Ground/Tilemap_Flat.png");
|
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};
|
game->knights[i].position = {rand_x,rand_y};
|
||||||
|
|
||||||
PlayAnimation(ANIM_KNIGHT_IDLE, knight_anims, &game->anim_playbacks[i]);
|
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->anim_playbacks[i].current_frame = rand_frame;
|
||||||
}
|
}
|
||||||
game->entity_count = entities;
|
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_BACK1 6
|
||||||
#define ANIM_KNIGHT_ATTACK_BACK2 7
|
#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 u16 knight_sprite_size = 192;
|
||||||
const Vector2 knight_origin = {knight_sprite_size / 2, knight_sprite_size / 2 + 35};
|
const Vector2 knight_origin = {knight_sprite_size / 2, knight_sprite_size / 2 + 35};
|
||||||
const Size knight_col_size = {50, 75};
|
const Size knight_col_size = {50, 75};
|
||||||
@ -32,52 +25,13 @@ const Rectangle knight_colrect_select = {
|
|||||||
knight_col_size.height,
|
knight_col_size.height,
|
||||||
};
|
};
|
||||||
|
|
||||||
SpriteAnimation knight_idle = {
|
SpriteAnimation knight_anims[8] = {
|
||||||
.loop = true,
|
{.loop = true, .total_frames = 6}, // ANIM_KNIGHT_IDLE
|
||||||
.total_frames = 6,
|
{.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 total_frames;
|
||||||
u8 current_frame;
|
u8 current_frame;
|
||||||
u8 loop;
|
u8 loop;
|
||||||
|
u8 finished;
|
||||||
};
|
};
|
||||||
|
|
||||||
void PlayAnimation(int animation, SpriteAnimation *anims, SpriteAnimationPlayback *playback);
|
void PlayAnimation(int animation, SpriteAnimation *anims, SpriteAnimationPlayback *playback);
|
||||||
@ -27,6 +28,7 @@ inline void PlayAnimation(int animation, SpriteAnimation *anims, SpriteAnimation
|
|||||||
playback->row = animation;
|
playback->row = animation;
|
||||||
playback->total_frames = anims[animation].total_frames;
|
playback->total_frames = anims[animation].total_frames;
|
||||||
playback->loop = anims[animation].loop;
|
playback->loop = anims[animation].loop;
|
||||||
|
playback->finished = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TickSpriteAnimations(SpriteAnimationPlayback *playbacks, int len) {
|
void TickSpriteAnimations(SpriteAnimationPlayback *playbacks, int len) {
|
||||||
@ -41,11 +43,12 @@ void TickSpriteAnimations(SpriteAnimationPlayback *playbacks, int len) {
|
|||||||
if (playback->loop) {
|
if (playback->loop) {
|
||||||
playback->current_frame = 0;
|
playback->current_frame = 0;
|
||||||
}
|
}
|
||||||
|
playback->finished = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool IsAnimationFinished(SpriteAnimationPlayback playback) {
|
inline bool IsAnimationFinished(SpriteAnimationPlayback playback) {
|
||||||
return playback.current_frame == playback.total_frames;
|
return playback.finished;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user