From 3c7af33fd1ae6c1df1d26045222dfdc14c59e66c Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Mon, 20 Apr 2020 17:38:46 -0700 Subject: game: use stage_conf_t.adopt in conversions Rather than a new-then-free dance this avoids creating a new stage_t altogether by installing the new object into the existing one via the stage_conf_t.parent pointer combined with adopt flag. --- src/game.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src/game.c') diff --git a/src/game.c b/src/game.c index 552471b..4650070 100644 --- a/src/game.c +++ b/src/game.c @@ -268,8 +268,7 @@ static ix2_search_status_t virus_search(void *cb_context, ix2_object_t *ix2_obje switch (entity->any.type) { case ENTITY_TYPE_BABY: /* convert baby into inanimate virus (off the viruses array) */ - stage_free(entity->any.node); - entity->any.node = virus_node_new(&(stage_conf_t){ .parent = search->game->viruses_node, .name = "baby-virus", .active = 1, .alpha = 1.f }, &entity->any.model_x); + (void) virus_node_new(&(stage_conf_t){ .parent = entity->any.node, .adopt = 1, .name = "baby-virus", .active = 1, .alpha = 1.f }, &entity->any.model_x); sfx_play(sfx.baby_infected); entity->any.type = ENTITY_TYPE_VIRUS; @@ -283,9 +282,8 @@ static ix2_search_status_t virus_search(void *cb_context, ix2_object_t *ix2_obje return IX2_SEARCH_STOP_HIT; case ENTITY_TYPE_ADULT: - /* convert adult into inanimate virus (of the viruses array) */ - stage_free(entity->any.node); - entity->any.node = virus_node_new(&(stage_conf_t){ .parent = search->game->viruses_node, .name = "adult-virus", .active = 1, .alpha = 1.f }, &entity->any.model_x); + /* convert adult into inanimate virus (off the viruses array) */ + (void) virus_node_new(&(stage_conf_t){ .parent = entity->any.node, .adopt = 1, .name = "adult-virus", .active = 1, .alpha = 1.f }, &entity->any.model_x); sfx_play(sfx.adult_infected); search->game->state = GAME_STATE_OVER; return IX2_SEARCH_STOP_HIT; -- cgit v1.2.3