diff options
Diffstat (limited to 'modules/sparkler/spark.c')
-rw-r--r-- | modules/sparkler/spark.c | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/modules/sparkler/spark.c b/modules/sparkler/spark.c deleted file mode 100644 index ea68ac2..0000000 --- a/modules/sparkler/spark.c +++ /dev/null @@ -1,63 +0,0 @@ -#include <stdlib.h> - -#include "draw.h" -#include "particle.h" -#include "particles.h" - -/* a "spark" particle type, emitted from behind rockets */ -#define SPARK_MAX_DECAY_RATE 20 -#define SPARK_MIN_DECAY_RATE 2 -#define SPARK_MAX_LIFETIME 150 -#define SPARK_MIN_LIFETIME 1 - -typedef struct _spark_ctxt_t { - int decay_rate; - int longevity; - int lifetime; -} spark_ctxt_t; - - -static int spark_init(particles_t *particles, particle_t *p) -{ - spark_ctxt_t *ctxt = p->ctxt; - - p->props->drag = 20.0; - p->props->mass = 0.1; - ctxt->decay_rate = rand_within_range(SPARK_MIN_DECAY_RATE, SPARK_MAX_DECAY_RATE); - ctxt->lifetime = ctxt->longevity = rand_within_range(SPARK_MIN_LIFETIME, SPARK_MAX_LIFETIME); - - return 1; -} - - -static particle_status_t spark_sim(particles_t *particles, particle_t *p) -{ - spark_ctxt_t *ctxt = p->ctxt; - - if (!ctxt->longevity || (ctxt->longevity -= ctxt->decay_rate) <= 0) { - ctxt->longevity = 0; - return PARTICLE_DEAD; - } - - return PARTICLE_ALIVE; -} - - -static void spark_draw(particles_t *particles, particle_t *p, int x, int y, fb_fragment_t *f) -{ - spark_ctxt_t *ctxt = p->ctxt; - - if (!draw_pixel(f, x, y, makergb(0xff, 0xa0, 0x20, ((float)ctxt->longevity / ctxt->lifetime)))) { - /* offscreen */ - ctxt->longevity = 0; - } -} - - -particle_ops_t spark_ops = { - .context_size = sizeof(spark_ctxt_t), - .sim = spark_sim, - .init = spark_init, - .draw = spark_draw, - .cleanup = NULL, - }; |