X-Git-Url: https://jasonwoof.com/gitweb/?p=vor.git;a=blobdiff_plain;f=main.c;h=a2d2e930d68bb080481b451ea98d86c9dc6fc245;hp=fe864bd8feeb6936907f82ec17b1ad826b51f9ae;hb=8d9f69072204deab2486967d710477d4d2949754;hpb=a9bcdd09afa1b6ea40a7fb09fdd16b60dc932775 diff --git a/main.c b/main.c index fe864bd..a2d2e93 100644 --- a/main.c +++ b/main.c @@ -68,12 +68,15 @@ struct dot { int heat; // heat multiplier (color). }; +void draw(void); + struct dot edot[MAXENGINEDOTS], *dotptr = edot; struct dot bdot[MAXBANGDOTS]; // Other global variables char topline[1024]; char *initerror = ""; +int screenshot_number = 0; struct ship ship = { SHIP, 0, NULL, XSIZE/2, YSIZE/2, BARRIER_SPEED, 0.0 }; @@ -347,12 +350,31 @@ void font_cleanup() { font_free(g_font); } +void +set_video_mode() { + Uint32 flag; + + // Attempt to get the required video size + flag = SDL_DOUBLEBUF | SDL_HWSURFACE; + if(opt_fullscreen) flag |= SDL_FULLSCREEN; + surf_screen = SDL_SetVideoMode(XSIZE,YSIZE,16,flag); +} + +void +toggle_fullscreen() { + opt_fullscreen = 1 - opt_fullscreen; + set_video_mode(); + if(paused) { + draw(); + } +} + + int init(void) { int i; char *s; - Uint32 flag; // Where are our data files? if(!find_files()) exit(1); @@ -377,10 +399,9 @@ init(void) { play_tune(TUNE_TITLE_PAGE); + // Attempt to get the required video size - flag = SDL_DOUBLEBUF | SDL_HWSURFACE; - if(opt_fullscreen) flag |= SDL_FULLSCREEN; - surf_screen = SDL_SetVideoMode(XSIZE,YSIZE,16,flag); + set_video_mode(); // Set the title bar text SDL_WM_SetCaption("Variations on Rockdodger", "VoR"); @@ -638,7 +659,7 @@ gameloop() { autopilot(t_frame); } - while(SDL_PollEvent(&e)) { + while(paused ? SDL_WaitEvent(&e) : SDL_PollEvent(&e)) { switch(e.type) { case SDL_QUIT: return; case SDL_KEYDOWN: @@ -661,8 +682,21 @@ gameloop() { return; case SDLK_3: case SDLK_PRINT: - // FIXME make a unique filename like vor-screenshot--.bmp - SDL_SaveBMP(surf_screen, "snapshot.bmp"); + { + FILE *screenshot_fp; + char tmp[30]; + char *screenshot_filename = &(tmp[0]); + for(;;) { + snprintf(screenshot_filename, 30, "vor-screenshot-%02i.bmp", screenshot_number++); + screenshot_fp = fopen(screenshot_filename, "r"); + if(screenshot_fp) { + fclose(screenshot_fp); + } else { + break; + } + } + SDL_SaveBMP(surf_screen, screenshot_filename); + } break; case SDLK_p: case SDLK_PAUSE: @@ -674,6 +708,10 @@ gameloop() { ms_end = SDL_GetTicks(); } break; + case SDLK_f: + case SDLK_F11: + toggle_fullscreen(); + break; default: // other keys are handled by checking keystate each frame break;