X-Git-Url: https://jasonwoof.com/gitweb/?p=vor.git;a=blobdiff_plain;f=main.c;h=276cf3a29c132bd2f589ccdbd1ad8bb04aa4b131;hp=9e5c36f4261b72cfdf0b141b5910d53d29a8ba74;hb=adaa8776a400d807bc859d6669e282010fef3b10;hpb=76c0b11e970a4f5b73b97cd83a119bff0ea6c1f4 diff --git a/main.c b/main.c index 9e5c36f..276cf3a 100644 --- a/main.c +++ b/main.c @@ -142,9 +142,9 @@ init_engine_dots() { void -new_engine_dots(float time_span) { +new_engine_dots(void) { int dir, i; - int n = time_span * ENGINE_DOTS_PER_TIC; + int n = t_frame * ENGINE_DOTS_PER_TIC; float a, r; // angle, random length float dx, dy; float hx, hy; // half ship width/height. @@ -170,7 +170,7 @@ new_engine_dots(float time_span) { dotptr->heat = 6; // dot was created at a random time during the time span - time = frnd() * time_span; // this is how long ago + time = frnd() * t_frame; // this is how long ago // calculate how fast the ship was going when this engine dot was // created (as if it had a smooth acceleration). This is used in @@ -185,7 +185,7 @@ new_engine_dots(float time_span) { // the starting position (not speed) of the dot is calculated as // though the ship were traveling at a constant speed for this - // time_span. + // t_frame. dotptr->x = (ship.x - (ship.dx - screendx) * time) + s[dir]*hx; dotptr->y = (ship.y - (ship.dy - screendy) * time) + s[(dir+1)&3]*hy; if(dir&1) { @@ -257,62 +257,62 @@ new_bang_dots(struct sprite *s) void -move_dot(struct dot *d, float ticks) +move_dot(struct dot *d) { Sprite *hit; float mass; if(d->active) { - d->x += (d->dx - screendx) * ticks; - d->y += (d->dy - screendy) * ticks; - d->mass -= ticks * d->decay; + d->x += (d->dx - screendx) * t_frame; + d->y += (d->dy - screendy) * t_frame; + d->mass -= t_frame * d->decay; if(d->mass < 0 || fclip(d->x, XSIZE) || fclip(d->y, YSIZE)) d->active = 0; else { hit = pixel_collides(d->x, d->y); - if(hit && hit->type != SHIP) { + if(hit) if(hit->type != SHIP) { d->active = 0; mass = sprite_mass(hit); - hit->dx += DOT_MASS_UNIT * d->mass * d->dx / mass; - hit->dy += DOT_MASS_UNIT * d->mass * d->dy / mass; + hit->dx += DOT_MASS_UNIT * d->mass * (d->dx - hit->dx) / mass; + hit->dy += DOT_MASS_UNIT * d->mass * (d->dy - hit->dy) / mass; } } } } void -move_dots(float ticks) +move_dots(void) { int i; - for(i=0; iactive) { - pixels = (uint16_t *) s->pixels; - row_inc = s->pitch / sizeof(uint16_t); + pixels = (uint16_t *) surf_screen->pixels; + row_inc = surf_screen->pitch / sizeof(uint16_t); pixel = pixels + (int)d->y * row_inc + (int)d->x; *pixel = heatcolor[min(3*W-1, (int)(d->mass * d->heat))]; } } void -draw_dots(SDL_Surface *s) { +draw_dots(void) { int i; - if(SDL_MUSTLOCK(s)) { SDL_LockSurface(s); } - draw_dust(s); - for(i=0; i 0) return; switch(state) { @@ -619,8 +619,8 @@ gameloop() { for(;;) { ms_frame = SDL_GetTicks() - ms_end; ms_end += ms_frame; - if(ms_frame > 1000) { - ms_frame = 1000; + if(ms_frame > 100) { + ms_frame = 100; } t_frame = gamespeed * ms_frame / 50; frames++; @@ -673,7 +673,7 @@ gameloop() { } if(!paused) { - update_state(t_frame); + update_state(); // SCROLLING tmp = (ship.y+ship.h/2 + ship.dy*t_frame - YSCROLLTO)/25 + (ship.dy-screendy); @@ -687,12 +687,12 @@ gameloop() { dist_ahead += (screendx - BARRIER_SPEED)*t_frame; if(MAX_DIST_AHEAD >= 0) dist_ahead = min(dist_ahead, MAX_DIST_AHEAD); - move_sprites(t_frame); - move_dots(t_frame); - move_dust(t_frame); + move_sprites(); + move_dots(); + move_dust(); - new_rocks(t_frame); - new_engine_dots(t_frame); + new_rocks(); + new_engine_dots(); collisions(); @@ -770,7 +770,7 @@ main(int argc, char **argv) { frames = 0; gameloop(); end = SDL_GetTicks(); - // printf("%ld frames in %ld ms, %.2f fps.\n", frames, end-start, frames * 1000.0 / (end-start)); + printf("%ld frames in %ld ms, %.2f fps.\n", frames, end-start, frames * 1000.0 / (end-start)); return 0; }