From 332fe33e8e8203278826988f7d21ff2e85f5c324 Mon Sep 17 00:00:00 2001 From: En Yi Date: Sat, 27 May 2023 17:01:20 +0800 Subject: [PATCH] Prevent crashing when no sprites is supplied --- scenes/game_systems.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/scenes/game_systems.c b/scenes/game_systems.c index 130b49c..ceec982 100644 --- a/scenes/game_systems.c +++ b/scenes/game_systems.c @@ -1067,17 +1067,21 @@ void sprite_animation_system(Scene_t* scene) { Entity_t* p_ent = get_entity(&scene->ent_manager, ent_idx); // Update animation state + unsigned int next_idx = p_cspr->current_idx; if (p_cspr->transition_func != NULL) { - unsigned int spr_idx = p_cspr->transition_func(p_ent); - if (p_cspr->current_idx != spr_idx) - { - p_cspr->current_idx = spr_idx; - p_cspr->sprites[spr_idx].sprite->current_frame = 0; - } + next_idx = p_cspr->transition_func(p_ent); } if (p_cspr->pause) return; + + bool reset = p_cspr->current_idx != next_idx; + p_cspr->current_idx = next_idx; + SpriteRenderInfo_t spr = p_cspr->sprites[p_cspr->current_idx]; + if (spr.sprite == NULL) continue; + + if (reset) spr.sprite->current_frame = 0; + // Animate it (handle frame count) spr.sprite->elapsed++; if (spr.sprite->elapsed == spr.sprite->speed)