Add player respawn system
parent
9e60d0fb89
commit
a1101cd951
|
@ -435,6 +435,7 @@ void init_level_scene(LevelScene_t* scene)
|
||||||
sc_array_add(&scene->scene.systems, &sprite_animation_system);
|
sc_array_add(&scene->scene.systems, &sprite_animation_system);
|
||||||
sc_array_add(&scene->scene.systems, &camera_update_system);
|
sc_array_add(&scene->scene.systems, &camera_update_system);
|
||||||
sc_array_add(&scene->scene.systems, &player_dir_reset_system);
|
sc_array_add(&scene->scene.systems, &player_dir_reset_system);
|
||||||
|
sc_array_add(&scene->scene.systems, &player_respawn_system);
|
||||||
sc_array_add(&scene->scene.systems, &toggle_block_system);
|
sc_array_add(&scene->scene.systems, &toggle_block_system);
|
||||||
|
|
||||||
// This avoid graphical glitch, not essential
|
// This avoid graphical glitch, not essential
|
||||||
|
|
|
@ -353,6 +353,22 @@ static Vector2 shift_bbox(Vector2 bbox, Vector2 new_bbox, AnchorPoint_t anchor)
|
||||||
return offset;
|
return offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void player_respawn_system(Scene_t* scene)
|
||||||
|
{
|
||||||
|
Entity_t* p_player;
|
||||||
|
sc_map_foreach_value(&scene->ent_manager.entities_map[PLAYER_ENT_TAG], p_player)
|
||||||
|
{
|
||||||
|
if (!p_player->m_alive)
|
||||||
|
{
|
||||||
|
p_player->m_alive = true;
|
||||||
|
CTransform_t* p_ctransform = get_component(p_player, CTRANSFORM_COMP_T);
|
||||||
|
memset(&p_ctransform->position, 0, sizeof(p_ctransform->position));
|
||||||
|
memset(&p_ctransform->velocity, 0, sizeof(p_ctransform->velocity));
|
||||||
|
memset(&p_ctransform->accel, 0, sizeof(p_ctransform->accel));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void player_dir_reset_system(Scene_t* scene)
|
void player_dir_reset_system(Scene_t* scene)
|
||||||
{
|
{
|
||||||
CPlayerState_t* p_pstate;
|
CPlayerState_t* p_pstate;
|
||||||
|
@ -630,9 +646,7 @@ void player_crushing_system(Scene_t* scene)
|
||||||
|
|
||||||
if (detected == 0b11)
|
if (detected == 0b11)
|
||||||
{
|
{
|
||||||
memset(&p_ctransform->position, 0, sizeof(p_ctransform->position));
|
p_player->m_alive = false;
|
||||||
memset(&p_ctransform->velocity, 0, sizeof(p_ctransform->velocity));
|
|
||||||
memset(&p_ctransform->accel, 0, sizeof(p_ctransform->accel));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -651,9 +665,7 @@ void player_crushing_system(Scene_t* scene)
|
||||||
//if (check_collision(&ent, &tilemap, false) == 1)
|
//if (check_collision(&ent, &tilemap, false) == 1)
|
||||||
if (detected == 0b11)
|
if (detected == 0b11)
|
||||||
{
|
{
|
||||||
memset(&p_ctransform->position, 0, sizeof(p_ctransform->position));
|
p_player->m_alive = false;
|
||||||
memset(&p_ctransform->velocity, 0, sizeof(p_ctransform->velocity));
|
|
||||||
memset(&p_ctransform->accel, 0, sizeof(p_ctransform->accel));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,4 +20,5 @@ void hitbox_update_system(Scene_t* scene);
|
||||||
void sprite_animation_system(Scene_t* scene);
|
void sprite_animation_system(Scene_t* scene);
|
||||||
void camera_update_system(Scene_t* scene);
|
void camera_update_system(Scene_t* scene);
|
||||||
void player_dir_reset_system(Scene_t* scene);
|
void player_dir_reset_system(Scene_t* scene);
|
||||||
|
void player_respawn_system(Scene_t* scene);
|
||||||
#endif // __GAME_SYSTEMS_H
|
#endif // __GAME_SYSTEMS_H
|
||||||
|
|
Loading…
Reference in New Issue