From c848c8f087d12dade1a1febe97fef5fb0af3ff9b Mon Sep 17 00:00:00 2001 From: Timo Kokkonen Date: Fri, 2 Apr 2010 16:19:21 +0300 Subject: [PATCH] main loop: Add support for tracers Tracers are a fading trail of the planet's movement. Signed-off-by: Timo Kokkonen --- main.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/main.c b/main.c index 02ff5b2..f779cda 100644 --- a/main.c +++ b/main.c @@ -49,6 +49,7 @@ struct sim_status { SDL_Surface *screen; struct camera *cam; double time_scale; + int tracers_enabled; }; static int poll_events(struct sim_status *status, double time) @@ -91,6 +92,9 @@ static int poll_events(struct sim_status *status, double time) case SDLK_a: time_scale_rate = 1 / 1.5; break; + case SDLK_t: + status->tracers_enabled = + !status->tracers_enabled; default: break; } @@ -163,6 +167,7 @@ static void loop(SDL_Surface *screen, int num_of_planets, double total_mass, status.cam = &camera; status.time_scale = 1; status.screen = screen; + status.tracers_enabled = 0; planet = malloc(sizeof(*planet)); init_planet(planet); @@ -210,7 +215,14 @@ static void loop(SDL_Surface *screen, int num_of_planets, double total_mass, last_frame_tick = ticks; SDL_LockSurface(screen); - clear_buf(screen); + + if (status.tracers_enabled && + !camera.speed.x && !camera.speed.y && + camera.zoom_rate == 1) { + fade_buf(screen, 10 * true_time); + } else { + clear_buf(screen); + } list_for_each_entry(pl1, &planet->list, list) { draw_planet(screen, pl1, &camera); -- 2.44.0