X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=main.c;h=f4cf4aa48fa0eadda02bf38a209846fce6429ec7;hb=refs%2Fheads%2Fscreencaster;hp=2bf77152e5b9c305ce4d0ed6d6d442b58d0f8683;hpb=c1db302b3620bf4e0314867cddf094402d76d2d6;p=vor.git diff --git a/main.c b/main.c index 2bf7715..f4cf4aa 100644 --- a/main.c +++ b/main.c @@ -26,12 +26,14 @@ #include #include #include +#include #include "font.h" #include "args.h" #include "common.h" -#include "config.h" +#include +#include "vorconfig.h" #include "dust.h" #include "file.h" #include "float.h" @@ -68,6 +70,8 @@ struct dot { int heat; // heat multiplier (color). }; +void draw(void); + struct dot edot[MAXENGINEDOTS], *dotptr = edot; struct dot bdot[MAXBANGDOTS]; @@ -134,6 +138,18 @@ extern int optind, opterr, optopt; // ************************************* FUNCS +#ifdef HAVE_NANOSLEEP +void +tiny_sleep() { + struct timespec t; + t.tv_sec = 0; + t.tv_nsec = 1; + nanosleep(&t, 0); +} +#else +#define tiny_sleep() +#endif + void init_engine_dots() { int i; @@ -362,6 +378,9 @@ void toggle_fullscreen() { opt_fullscreen = 1 - opt_fullscreen; set_video_mode(); + if(paused) { + draw(); + } } @@ -516,7 +535,7 @@ draw_title_page(void) x = (XSIZE-font_width(text))/2 + cos(fadetimer/4.5)*10; font_write(x,YSIZE-100 + cos(fadetimer/3)*5,text); - text = "Version " VERSION; + text = "Version " PACKAGE_VERSION; x = (XSIZE-font_width(text))/2 + sin(fadetimer/4.5)*10; font_write(x,YSIZE-50 + sin(fadetimer/2)*5,text); } @@ -647,6 +666,10 @@ gameloop() { if(ms_frame > 50) { ms_frame = 50; } + if(ms_frame < 35) { + SDL_Delay(35 - ms_frame); + ms_frame = 35; + } t_frame = gamespeed * ms_frame / 50; frames++; @@ -785,6 +808,21 @@ gameloop() { draw(); + { + FILE *screenshot_fp; + char tmp[30]; + char *screenshot_filename = &(tmp[0]); + for(;;) { + snprintf(screenshot_filename, 30, "vor-screenshot-%04i.bmp", screenshot_number++); + screenshot_fp = fopen(screenshot_filename, "r"); + if(screenshot_fp) { + fclose(screenshot_fp); + } else { + break; + } + } + SDL_SaveBMP(surf_screen, screenshot_filename); + } // new game if((keystate[SDLK_SPACE] || keystate[SDLK_1] || keystate[SDLK_2]) @@ -830,6 +868,8 @@ gameloop() { state = HIGH_SCORE_DISPLAY; state_timeout = 400; } + + tiny_sleep(); } } @@ -846,7 +886,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; }