#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 {
}
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;
}
}