Fix crash when player finish a level
This happens because the player exit entity is removed without checking with the tilemap, causing it to lingermain
parent
8efa3015ad
commit
e52c9445c9
|
@ -1255,7 +1255,8 @@ static void at_level_complete(Scene_t* scene)
|
||||||
}
|
}
|
||||||
if (data->sm.counter >= 1)
|
if (data->sm.counter >= 1)
|
||||||
{
|
{
|
||||||
do_action(scene, ACTION_NEXTLEVEL, true);
|
data->sm.counter = 0;
|
||||||
|
data->sm.fractional = 0;
|
||||||
at_level_dead(scene);
|
at_level_dead(scene);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1511,7 +1512,6 @@ void init_sandbox_scene(LevelScene_t* scene)
|
||||||
|
|
||||||
|
|
||||||
// insert level scene systems
|
// 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_movement_input_system);
|
||||||
sc_array_add(&scene->scene.systems, &player_bbox_update_system);
|
sc_array_add(&scene->scene.systems, &player_bbox_update_system);
|
||||||
sc_array_add(&scene->scene.systems, &player_pushing_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, &boulder_destroy_wooden_tile_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, &tile_collision_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, &hitbox_update_system);
|
||||||
sc_array_add(&scene->scene.systems, &player_crushing_system);
|
sc_array_add(&scene->scene.systems, &player_crushing_system);
|
||||||
sc_array_add(&scene->scene.systems, &spike_collision_system);
|
sc_array_add(&scene->scene.systems, &spike_collision_system);
|
||||||
|
|
|
@ -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)
|
if (p_spr->current_frame == p_spr->sprites[p_spr->current_idx].sprite->frame_count - 1)
|
||||||
{
|
{
|
||||||
p_spr->pause = true;
|
p_spr->pause = true;
|
||||||
// This entity has no special init, so it's fine to remove
|
//remove_entity(ent->manager, ent->m_id);
|
||||||
// at end of animation
|
|
||||||
remove_entity(ent->manager, ent->m_id);
|
|
||||||
}
|
}
|
||||||
return p_spr->current_idx;
|
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);
|
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;
|
return p_ent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue