Fix crash when player finish a level

This happens because the player exit entity is removed without checking
with the tilemap, causing it to linger
main
En Yi 2024-10-05 19:07:55 +08:00
parent 8efa3015ad
commit e52c9445c9
2 changed files with 6 additions and 6 deletions

View File

@ -1255,7 +1255,8 @@ static void at_level_complete(Scene_t* scene)
}
if (data->sm.counter >= 1)
{
do_action(scene, ACTION_NEXTLEVEL, true);
data->sm.counter = 0;
data->sm.fractional = 0;
at_level_dead(scene);
}
}
@ -1511,7 +1512,6 @@ void init_sandbox_scene(LevelScene_t* scene)
// insert level scene systems
sc_array_add(&scene->scene.systems, &update_tilemap_system);
sc_array_add(&scene->scene.systems, &player_movement_input_system);
sc_array_add(&scene->scene.systems, &player_bbox_update_system);
sc_array_add(&scene->scene.systems, &player_pushing_system);
@ -1523,7 +1523,7 @@ void init_sandbox_scene(LevelScene_t* scene)
sc_array_add(&scene->scene.systems, &boulder_destroy_wooden_tile_system);
sc_array_add(&scene->scene.systems, &update_tilemap_system);
sc_array_add(&scene->scene.systems, &tile_collision_system);
//sc_array_add(&scene->scene.systems, &update_tilemap_system);
sc_array_add(&scene->scene.systems, &update_tilemap_system);
sc_array_add(&scene->scene.systems, &hitbox_update_system);
sc_array_add(&scene->scene.systems, &player_crushing_system);
sc_array_add(&scene->scene.systems, &spike_collision_system);

View File

@ -146,9 +146,7 @@ static unsigned int player_finish_transition_func(Entity_t* ent)
if (p_spr->current_frame == p_spr->sprites[p_spr->current_idx].sprite->frame_count - 1)
{
p_spr->pause = true;
// This entity has no special init, so it's fine to remove
// at end of animation
remove_entity(ent->manager, ent->m_id);
//remove_entity(ent->manager, ent->m_id);
}
return p_spr->current_idx;
}
@ -165,6 +163,8 @@ Entity_t* create_player_finish(EntityManager_t* ent_manager)
add_component(p_ent, CTILECOORD_COMP_T);
CLifeTimer_t* p_clifetimer = add_component(p_ent, CLIFETIMER_T);
p_clifetimer->life_time = 0.9f;
return p_ent;
}