diff options
author | Paweł Redman <pawel.redman@gmail.com> | 2018-04-01 15:03:23 +0200 |
---|---|---|
committer | Paweł Redman <pawel.redman@gmail.com> | 2018-04-01 15:04:02 +0200 |
commit | 30c5c419aedd0e5aae92be6e0eee83f0b6690c6e (patch) | |
tree | f0e37219c6bfd88e6fab44fbfc6319bab650eeb8 /src/game/unit_soldier.cpp | |
parent | 020e91ca69f35329eae518f3fe92afba2e117d06 (diff) |
Add the replicator (not finished).
Placeholder sounds from Tremulous, as usual.
Diffstat (limited to 'src/game/unit_soldier.cpp')
-rw-r--r-- | src/game/unit_soldier.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
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<float>((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); } |