summaryrefslogtreecommitdiff
path: root/src/game/effects.cpp
diff options
context:
space:
mode:
authorPaweł Redman <pawel.redman@gmail.com>2018-04-20 14:18:16 +0200
committerPaweł Redman <pawel.redman@gmail.com>2018-04-20 14:18:16 +0200
commit84766a7d49d3c1e233e13191c86d4ada2bbe2ddc (patch)
tree57f733939a9fd9c0cb1c3157da37e90b2c08b547 /src/game/effects.cpp
parent0bc4eaebc6cb4410c5dbf3d89ae02634cfe72e27 (diff)
Refactor and improve the hivemind + better AI debugging.
Diffstat (limited to 'src/game/effects.cpp')
-rw-r--r--src/game/effects.cpp38
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