JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
bump version to 0.5.8
[vor.git] / dust.c
diff --git a/dust.c b/dust.c
index 7b62867..0e4daa2 100644 (file)
--- a/dust.c
+++ b/dust.c
@@ -1,9 +1,10 @@
 #include <SDL.h>
 #include <math.h>
 
-#include "config.h"
+#include "vorconfig.h"
 #include "globals.h"
 #include "dust.h"
+#include "float.h"
 #include "mt.h"
 
 struct dust_mote {
@@ -27,48 +28,27 @@ init_dust(void)
 }
 
 void
-move_dust(float ticks)
+move_dust(void)
 {
        int i;
-       float xscroll = screendx * ticks;
-       float yscroll = screendy * ticks;
-
-       // Originally this code was much simpler, but it would crash sometimes
-       // because the floating point numbers wouldn't always round the same
-       // direction, and we'd ocanially try to draw off the screen.
+       float xscroll = screendx * t_frame;
+       float yscroll = screendy * t_frame;
        
        for(i=0; i<N_DUST_MOTES; i++) {
                motes[i].x -= xscroll / (1.3 + motes[i].z);
-               motes[i].y -= yscroll / (1.3 + motes[i].z);
+               motes[i].x = fwrap(motes[i].x, XSIZE);
 
-               if(motes[i].x < 0) {
-                       motes[i].x += XSIZE;
-               }
-               if(motes[i].x > (XSIZE - 0.000001)) {
-                       motes[i].x -= XSIZE;
-                       if(motes[i].x < 0) {
-                               motes[i].x = 0;
-                       }
-               }
-
-               if(motes[i].y < 0) {
-                       motes[i].y += YSIZE;
-               }
-               if(motes[i].y > (YSIZE - 0.000001)) {
-                       motes[i].y -= YSIZE;
-                       if(motes[i].y < 0) {
-                               motes[i].y = 0;
-                       }
-               }
+               motes[i].y -= yscroll / (1.3 + motes[i].z);
+               motes[i].y = fwrap(motes[i].y, YSIZE);
        }
 }
 
 void
-draw_dust(SDL_Surface *s)
+draw_dust(void)
 {
        int i;
-       uint16_t *pixels = s->pixels;
+       uint16_t *pixels = surf_screen->pixels;
        for(i=0; i<N_DUST_MOTES; i++) {
-               pixels[s->pitch/2*(int)motes[i].y + (int)motes[i].x] = motes[i].color;
+               pixels[surf_screen->pitch/2*(int)motes[i].y + (int)motes[i].x] = motes[i].color;
        }
 }