X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fgame%2Flevel%2Fplayer.c;h=7d991f84cd3e19aae95588c616950993971bbc1d;hb=d2d40e79cdd8ac98aaf0b80a024a1169684eda92;hp=ca328b48c5b9cedc06fac8df8e76e2c8caefa226;hpb=43a6b31703b0e7d1e3cb6a97dfecad6c29eafbf8;p=nothing.git diff --git a/src/game/level/player.c b/src/game/level/player.c index ca328b48..7d991f84 100644 --- a/src/game/level/player.c +++ b/src/game/level/player.c @@ -28,7 +28,7 @@ typedef enum Player_state { } Player_state; struct Player { - Lt *lt; + Lt lt; Player_state state; RigidBodies *rigid_bodies; @@ -49,13 +49,13 @@ Player *create_player_from_line_stream(LineStream *line_stream, RigidBodies *rig { trace_assert(line_stream); - Lt *lt = create_lt(); + Lt lt = {0}; if (lt == NULL) { return NULL; } - Player *player = PUSH_LT(lt, nth_alloc(sizeof(Player)), free); + Player *player = PUSH_LT(lt, nth_calloc(1, sizeof(Player)), free); if (player == NULL) { RETURN_LT(lt, NULL); } @@ -86,8 +86,7 @@ Player *create_player_from_line_stream(LineStream *line_stream, RigidBodies *rig player->alive_body_id = rigid_bodies_add( rigid_bodies, - rect(x, y, PLAYER_WIDTH, PLAYER_HEIGHT), - color); + rect(x, y, PLAYER_WIDTH, PLAYER_HEIGHT)); player->dying_body = PUSH_LT( lt, @@ -130,7 +129,11 @@ int player_render(const Player * player, return -1; } - return rigid_bodies_render(player->rigid_bodies, player->alive_body_id, camera); + return rigid_bodies_render( + player->rigid_bodies, + player->alive_body_id, + player->color, + camera); } case PLAYER_STATE_DYING: @@ -163,6 +166,7 @@ void player_update(Player *player, explosion_update(player->dying_body, delta_time); if (explosion_is_done(player->dying_body)) { + rigid_bodies_disable(player->rigid_bodies, player->alive_body_id, false); rigid_bodies_transform_velocity( player->rigid_bodies, player->alive_body_id, @@ -241,6 +245,7 @@ void player_die(Player *player) player->play_die_cue = 1; explosion_start(player->dying_body, vec(hitbox.x, hitbox.y)); player->state = PLAYER_STATE_DYING; + rigid_bodies_disable(player->rigid_bodies, player->alive_body_id, true); } }