#include "game.hpp" namespace game { effect_t::effect_t(state_t *game_) : world::entity_t(ET_EFFECT) { game = game_; } fx_tracer_t::fx_tracer_t(state_t *game_, v2f_t x0_, v2f_t x1_) : effect_t(game_) { ttl = game->now + 0.07; x0 = x0_; x1 = x1_; render_bounds[0] = x0; render_bounds[1] = x1; render_bounds = render_bounds.norm(); cmodel.bounds = render_bounds; cmodel.cflags = 0; } void fx_tracer_t::render_to(render::state_t *render) { v2f_t x0l, x1l; float t; t = 1.0f - (ttl - game->now) / 0.07f * 0.7f; x0l[0] = lerp(x0[0], x1[0], t); x0l[1] = lerp(x0[1], x1[1], t); x1l[0] = lerp(x0[0], x1[0], t + 0.3f); x1l[1] = lerp(x0[1], x1[1], t + 0.3f); render->render_line(x0l, x1l, sf::Color::Yellow); } fx_blood_t::fx_blood_t(state_t *game_, v2f_t x_, bool alien_) : effect_t(game_) { ttl = game->now + 0.3f; x = x_; alien = alien_; render_bounds[0] = x - v2f_t(0.2, 0.2); render_bounds[1] = x + v2f_t(0.2, 0.2); cmodel.bounds = render_bounds; cmodel.cflags = 0; } void fx_blood_t::render_to(render::state_t *render) { double phase; sf::Color color; phase = (game->now - ttl) / 0.3 + 1; if (alien) color = sf::Color::Green; else color = sf::Color::Red; render->render(phase, &assets::fx.blood, render_bounds, color); } } // namespace game