From 30c5c419aedd0e5aae92be6e0eee83f0b6690c6e Mon Sep 17 00:00:00 2001 From: Paweł Redman Date: Sun, 1 Apr 2018 15:03:23 +0200 Subject: Add the replicator (not finished). Placeholder sounds from Tremulous, as usual. --- src/game/unit_soldier.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src/game/unit_soldier.cpp') diff --git a/src/game/unit_soldier.cpp b/src/game/unit_soldier.cpp index e7d3849..4112d9a 100644 --- a/src/game/unit_soldier.cpp +++ b/src/game/unit_soldier.cpp @@ -147,8 +147,13 @@ void unit_soldier_t::on_think(void) void unit_soldier_t::on_death(void) { - render_size[0] = v2f_t(-0.75f, -0.5f); - render_size[1] = v2f_t(+0.75f, +0.5f); + if (health >= -10) { + render_size[0] = v2f_t(-0.75f, -0.5f); + render_size[1] = v2f_t(+0.75f, +0.5f); + } else { + assets::soldier.gib_sound.play_3d(x); + } + render_layer = -1; cmodel.cflags = CF_BACKGROUND; place(world, x); @@ -200,8 +205,14 @@ void unit_soldier_t::render_to(render::state_t *render) render->render(game->now * 10, body, render_bounds, body_angle); render->render(game->now * 10, &assets::soldier.head_idle, render_bounds, body_angle); - } else - render->render(game->now * 10, &assets::soldier.dead, render_bounds); + } else { + float phase = clamp((game->now - death_time) * 5, 0, 0.9); + + if (health < -10) + render->render(phase, &assets::soldier.gibbing, render_bounds); + else + render->render(phase, &assets::soldier.dead, render_bounds); + } unit_t::render_to(render); } -- cgit