diff options
author | Paweł Redman <pawel.redman@gmail.com> | 2018-04-20 14:18:16 +0200 |
---|---|---|
committer | Paweł Redman <pawel.redman@gmail.com> | 2018-04-20 14:18:16 +0200 |
commit | 84766a7d49d3c1e233e13191c86d4ada2bbe2ddc (patch) | |
tree | 57f733939a9fd9c0cb1c3157da37e90b2c08b547 /src/game/effects.cpp | |
parent | 0bc4eaebc6cb4410c5dbf3d89ae02634cfe72e27 (diff) |
Refactor and improve the hivemind + better AI debugging.
Diffstat (limited to 'src/game/effects.cpp')
-rw-r--r-- | src/game/effects.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/game/effects.cpp b/src/game/effects.cpp index daa2770..b69647c 100644 --- a/src/game/effects.cpp +++ b/src/game/effects.cpp @@ -174,6 +174,8 @@ fx_explosion_t::fx_explosion_t(state_t *game_, v2f_t x_) : effect_t(game_) flash = new fx_flash_t(game, x, 5.0f, sf::Color(255, 255, 170, 255)); flash->place(&game->world); + + game->hivemind_alert(x, 20.0f, false, v2f_t(0, 0)); } void fx_explosion_t::render_to(render::state_t *render) @@ -202,6 +204,8 @@ fx_bullet_miss_t::fx_bullet_miss_t(state_t *game_, v2f_t x_, bool water_) : effe assets::fx.water_splash_sound.play_3d(x); else assets::fx.ricochet_sound.play_3d(x); + + game->hivemind_alert(x, 6.0f, false, v2f_t(0, 0)); } void fx_bullet_miss_t::render_to(render::state_t *render) @@ -210,4 +214,38 @@ void fx_bullet_miss_t::render_to(render::state_t *render) render->render(phase, (water ? &assets::fx.water_splash : &assets::fx.ricochet), render_bounds, sf::Color::White); } +fx_debug_hivemind_t::fx_debug_hivemind_t(state_t *game_, v2f_t x_, float r_, bool do_move_, v2f_t move_to_) : effect_t(game_) +{ + ttl = game->now + 1.0; + + x = x_; + r = r_; + do_move = do_move_; + move_to = move_to_; + + render_bounds[0] = x - v2f_t(r, r); + render_bounds[1] = x + v2f_t(r, r); + render_bounds = render_bounds.norm(); + cmodel.bounds = render_bounds; + cmodel.cflags = 0; + + ignore_waking = true; + wake(); +} + +void fx_debug_hivemind_t::render_to(render::state_t *render) +{ + static const sf::Color color(0, 255, 0, 50); + + if (debug_AI) { + render->render_circle(x, r, color); + + if (do_move) { + render->render_line(x, move_to, sf::Color::Red); + render->render_circle(x, 0.1f, sf::Color::Red); + } + } +} + + } // namespace game |