#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <time.h>
#include "font.h"
#include "args.h"
#include "common.h"
-#include "config.h"
+#include <config.h>
+#include "vorconfig.h"
#include "dust.h"
#include "file.h"
#include "float.h"
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 };
// ************************************* 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;
}
SDL_Surface *
-load_image(char *filename)
-{
+_load_image(char *filename, int alpha) {
SDL_Surface *tmp, *img = NULL;
char *s = add_data_path(filename);
if(s) {
tmp = IMG_Load(s);
free(s);
if(tmp) {
- img = SDL_DisplayFormat(tmp);
+ if(alpha) {
+ img = SDL_DisplayFormatAlpha(tmp);
+ } else {
+ img = SDL_DisplayFormat(tmp);
+ }
SDL_FreeSurface(tmp);
}
}
return img;
}
+SDL_Surface *
+load_image(char *filename) {
+ return _load_image(filename, 0);
+}
+
+SDL_Surface *
+load_image_alpha(char *filename) {
+ return _load_image(filename, 1);
+}
+
+
void
load_ship(void)
{
toggle_fullscreen() {
opt_fullscreen = 1 - opt_fullscreen;
set_video_mode();
+ if(paused) {
+ draw();
+ }
}
}
// Load the banners
- NULLERROR(surf_b_variations = load_image("b_variations.png"));
- NULLERROR(surf_b_on = load_image("b_on.png"));
- NULLERROR(surf_b_rockdodger = load_image("b_rockdodger.png"));
+ NULLERROR(surf_b_variations = load_image_alpha("b_variations.png"));
+ NULLERROR(surf_b_on = load_image_alpha("b_on.png"));
+ NULLERROR(surf_b_rockdodger = load_image_alpha("b_rockdodger.png"));
- NULLERROR(surf_b_game = load_image("b_game.png"));
- NULLERROR(surf_b_over = load_image("b_over.png"));
+ NULLERROR(surf_b_game = load_image_alpha("b_game.png"));
+ NULLERROR(surf_b_over = load_image_alpha("b_over.png"));
// Load the life indicator (small ship) graphic.
NULLERROR(surf_life = load_image("life.png"));
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);
}
return;
case SDLK_3:
case SDLK_PRINT:
- // FIXME make a unique filename like vor-screenshot-<pid>-<count>.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:
state = HIGH_SCORE_DISPLAY;
state_timeout = 400;
}
+
+ tiny_sleep();
}
}