X-Git-Url: https://jasonwoof.com/gitweb/?p=vor.git;a=blobdiff_plain;f=main.c;h=daa2471c752b3a38a8a724f53dda32e7e4657b8a;hp=9926f76efb8fbcdb91245d035698a5c5d410065d;hb=9c864f32b506241d30e1b40fae5bea78f54ec498;hpb=0e26db03c5aca3622a007b607368b250e40b7f2c diff --git a/main.c b/main.c index 9926f76..daa2471 100644 --- a/main.c +++ b/main.c @@ -53,7 +53,6 @@ SDL_Surface *surf_b_over, // Title element "over" *surf_ship, // Spaceship element *surf_life, // Indicator of number of ships remaining - *surf_speed, // Speed indicator *surf_rock[NROCKS], // THE ROCKS *surf_font_big; // The big font @@ -71,16 +70,13 @@ char *initerror = ""; struct shape shipshape; float shipx = XSIZE/2, shipy = YSIZE/2; // X position, 0..XSIZE -float shipdx = 8, shipdy = 0; // Change in X position per tick. +float shipdx = 7.5, shipdy = 0.0; // Change in X position per tick. float screendx = 7.5, screendy = 0.0; float xscroll, yscroll; float gamerate; // this controls the speed of everything that moves. float bangx, bangy, bangdx, bangdy; -float game_dist, avg_speed, cur_speed; -uint16_t avg_speed_w, cur_speed_w; // [0, 74] - int nships,score,game_ticks,ticks_since_last,last_ticks; int gameover; int maneuver = 0; @@ -210,6 +206,7 @@ draw_bang_dots(SDL_Surface *s) { rawpixel = (Uint16 *) s->pixels; first_i = -1; + last_i = 0; for(i = bd1; (bd1 <= bd2)?(i= bd1 && i < bd2); last_i = ++i) { @@ -474,9 +471,6 @@ init(int fullscreen) { NULLERROR(temp = IMG_Load(add_path("indicators/life.png"))); NULLERROR(surf_life = SDL_DisplayFormat(temp)); - NULLERROR(temp = IMG_Load(add_path("indicators/speed.png"))); - NULLERROR(surf_speed = SDL_DisplayFormat(temp)); - init_engine_dots(); init_space_dots(); @@ -493,7 +487,7 @@ init(int fullscreen) { int draw() { int i; - SDL_Rect src, dest; + SDL_Rect dest; int bang, x; char *text; float fadegame,fadeover; @@ -523,31 +517,6 @@ draw() { SDL_BlitSurface(surf_life, NULL, surf_screen, &dest); } - if(state == GAMEPLAY) { - // Update speeds. - cur_speed = shipdx; - if(shipdx < 0) cur_speed = 0; - if(shipdx > 20) cur_speed = 20; - game_dist += cur_speed*ticks_since_last; - game_ticks += ticks_since_last; - if(game_ticks < 2*1000) avg_speed = cur_speed; - else avg_speed = game_dist/game_ticks; - // printf("avg=%.2f, cur=%.2f.\n", avg_speed, cur_speed); - avg_speed_w = 10 + 64*avg_speed/20; - cur_speed_w = 10 + 64*cur_speed/20; - } - - if(state == GAMEPLAY || state == DEAD_PAUSE) { - // Draw the speed indicators. - src.x = 0; src.y = 0; - src.h = surf_speed->h; - dest.x = 240; - src.w = avg_speed_w; dest.y = 10; - SDL_BlitSurface(surf_speed, &src, surf_screen, &dest); - src.w = cur_speed_w; dest.y = 20; - SDL_BlitSurface(surf_speed, &src, surf_screen, &dest); - } - // Draw the score snprintscore_line(topline, 50, score); SFont_Write(surf_screen, g_font, XSIZE-250, 0, topline); @@ -741,6 +710,7 @@ gameloop() { tmp /= -25; tmp = ((screendx * (gamerate - 12)) + (tmp * gamerate)) / 12; screendx = -tmp; + if(screendx < 7.5) screendx=7.5; xscroll = screendx * gamerate; yscroll = screendy * gamerate; @@ -757,15 +727,15 @@ gameloop() { // BOUNCE X if(shipx<0 || shipx>XSIZE-surf_ship->w) { // BOUNCE from left and right wall - shipx -= shipdx*gamerate; - shipdx *= -99; + shipx -= (shipdx-screendx)*gamerate; + shipdx = 2*screendx-shipdx; } // BOUNCE Y if(shipy<0 || shipy>YSIZE-surf_ship->h) { // BOUNCE from top and bottom wall - shipy -= shipdy; - shipdy *= -0.99; + shipy -= (shipdy-screendy)*gamerate; + shipdy = 2*screendy-shipdy; } @@ -792,6 +762,7 @@ gameloop() { SDL_PumpEvents(); keystate = SDL_GetKeyState(NULL); + // new game if(keystate[SDLK_SPACE] && (state == HIGH_SCORE_DISPLAY || state == TITLE_PAGE)) { reset_rocks();