From 524db0cf19648e3c7c78d3e73103b7a0bdcd6bfc Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Wed, 18 Jan 2017 17:14:52 -0800 Subject: *: move source into src/ subdir Restoring some organizational sanity since adopting autotools. --- modules/sparkler/xplode.c | 82 ----------------------------------------------- 1 file changed, 82 deletions(-) delete mode 100644 modules/sparkler/xplode.c (limited to 'modules/sparkler/xplode.c') diff --git a/modules/sparkler/xplode.c b/modules/sparkler/xplode.c deleted file mode 100644 index 24a436e..0000000 --- a/modules/sparkler/xplode.c +++ /dev/null @@ -1,82 +0,0 @@ -#include - -#include "draw.h" -#include "particle.h" -#include "particles.h" - -/* a "xplode" particle type, emitted by rockets in large numbers at the end of their lifetime */ -#define XPLODE_MAX_DECAY_RATE 10 -#define XPLODE_MIN_DECAY_RATE 5 -#define XPLODE_MAX_LIFETIME 150 -#define XPLODE_MIN_LIFETIME 5 - -extern particle_ops_t spark_ops; -particle_ops_t xplode_ops; - -typedef struct _xplode_ctxt_t { - int decay_rate; - int longevity; - int lifetime; -} xplode_ctxt_t; - - -static int xplode_init(particles_t *particles, particle_t *p) -{ - xplode_ctxt_t *ctxt = p->ctxt; - - ctxt->decay_rate = rand_within_range(XPLODE_MIN_DECAY_RATE, XPLODE_MAX_DECAY_RATE); - ctxt->lifetime = ctxt->longevity = rand_within_range(XPLODE_MIN_LIFETIME, XPLODE_MAX_LIFETIME); - - p->props->drag = 10.9; - p->props->mass = 0.3; - - return 1; -} - - -static particle_status_t xplode_sim(particles_t *particles, particle_t *p) -{ - xplode_ctxt_t *ctxt = p->ctxt; - - if (!ctxt->longevity || (ctxt->longevity -= ctxt->decay_rate) <= 0) { - ctxt->longevity = 0; - return PARTICLE_DEAD; - } - - /* litter some small sparks behind the explosion particle */ - if (!(ctxt->lifetime % 30)) { - particle_props_t props = *p->props; - - props.velocity = (float)rand_within_range(10, 50) / 10000.0; - particles_spawn_particle(particles, p, &props, &xplode_ops); - } - - return PARTICLE_ALIVE; -} - - -static void xplode_draw(particles_t *particles, particle_t *p, int x, int y, fb_fragment_t *f) -{ - xplode_ctxt_t *ctxt = p->ctxt; - uint32_t color; - - if (ctxt->longevity == ctxt->lifetime) { - color = makergb(0xff, 0xff, 0xa0, 1.0); - } else { - color = makergb(0xff, 0xff, 0x00, ((float)ctxt->longevity / ctxt->lifetime)); - } - - if (!draw_pixel(f, x, y, color)) { - /* offscreen */ - ctxt->longevity = 0; - } -} - - -particle_ops_t xplode_ops = { - .context_size = sizeof(xplode_ctxt_t), - .sim = xplode_sim, - .init = xplode_init, - .draw = xplode_draw, - .cleanup = NULL, - }; -- cgit v1.2.3