int gameover;
int countdown = 0;
int maneuver = 0;
-int oss_sound_flag = 0;
+int sound_flag = 1, music_flag = 0;
int tail_plume = 0; // display big engine at the back?
int friction = 0; // should there be friction?
int scorerank;
}
}
- if(oss_sound_flag) {
-
- // Initialise SDL with audio and video
- if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) != 0) {
- oss_sound_flag = 0;
- printf ("Can't open sound, starting without it\n");
- atexit(SDL_Quit);
- } else {
- atexit(SDL_Quit);
- atexit(SDL_CloseAudio);
- oss_sound_flag = init_sound();
- }
-
+ if(sound_flag) {
+ // Initialize SDL with audio and video
+ if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) != 0) {
+ sound_flag = 0;
+ printf ("Can't open sound, starting without it\n");
+ atexit(SDL_Quit);
+ } else {
+ atexit(SDL_Quit);
+ atexit(SDL_CloseAudio);
+ sound_flag = init_sound();
+ }
} else {
- // Initialise with video only
+ // Initialize with video only
CONDERROR(SDL_Init(SDL_INIT_VIDEO) != 0);
atexit(SDL_Quit);
}
- if(oss_sound_flag)
play_tune(0);
// Attempt to get the required video size
surf_screen = SDL_SetVideoMode(XSIZE,YSIZE,16,flag);
// Set the title bar text
- SDL_WM_SetCaption("Rock Dodgers", "rockdodgers");
+ SDL_WM_SetCaption("Variations on Rockdodger", "VoR");
NULLERROR(surf_screen);
}
} else {
if(state == DEAD_PAUSE) {
- float blast_radius = START_RAD * state_timeout / 20.0;
+ float blast_radius = BLAST_RADIUS * state_timeout / 20.0;
if(xship < 60) xship = 60;
for(i = 0; i<MAXROCKS; i++ ) {
float dx, dy, n;
rock[i].y += (rock[i].yvel*movementrate + yscroll) * 1.01;
}
}
- if(rock[i].x < -32.0 || rock[i].x > XSIZE + 32.0) {
+ if(rock[i].x < -rock[i].image->w || rock[i].x > XSIZE) {
rock[i].active = 0;
rock[i].dead = 0;
}
if(draw() && state == GAMEPLAY) {
- if(oss_sound_flag) {
- // Play the explosion sound
- play_sound(0);
- }
+ // Play the explosion sound
+ play_sound(0);
makebangdots(xship,yship,xvel,yvel,surf_ship,30);
if(--nships <= 0) {
gameover = 1;
fullscreen = 0;
tail_plume = 0;
friction = 0;
- oss_sound_flag = 1;
+ sound_flag = 1;
+ music_flag = 0;
- while ((x = getopt(argc,argv,"efhsp")) >= 0) {
+ while ((x = getopt(argc,argv,"efhmps")) >= 0) {
switch(x) {
case 'e': // engine
tail_plume = 1;
" -e big tail [E]ngine\n"
" -f [F]ull screen\n"
" -h this [H]elp message\n"
+ " -m enable [M]usic\n"
" -p original [P]hysics (friction)\n"
" -s [S]ilent (no sound)\n");
exit(0);
break;
+ case 'm': // music
+ music_flag = 1;
case 'p': // physics
friction = 1;
break;
case 's': // silent
- oss_sound_flag = 0;
+ sound_flag = 0;
+ music_flag = 0;
break;
}
}
#include <SDL/SDL.h>
#include <SDL/SDL_mixer.h>
+extern int sound_flag, music_flag;
+
#define CONDERROR(a) if ((a)) {fprintf(stderr,"Error: %s\n",SDL_GetError());exit(1);}
#define NULLERROR(a) CONDERROR((a)==NULL)
}/*}}}*/
void play_sound(int i) {/*{{{*/
+ if(!sound_flag) return;
#ifdef DEBUG
printf ("play sound %d on first free channel\n",i);
#endif
#undef DEBUG
void play_tune(int i) {/*{{{*/
+ if(!sound_flag || !music_flag) return;
if (playing==i)
return;
if (playing) {