JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
misc minor stuff.
authorJoshua Grams <josh@qualdan.com>
Mon, 13 Dec 2004 22:59:05 +0000 (22:59 +0000)
committerJoshua Grams <josh@qualdan.com>
Mon, 13 Dec 2004 22:59:05 +0000 (22:59 +0000)
config.h
main.c
sound.c

index d8991ef..f214aa8 100644 (file)
--- a/config.h
+++ b/config.h
@@ -18,4 +18,4 @@
 #define MAXSPACEDOTS 2000
 #define W 100
 #define M 255
 #define MAXSPACEDOTS 2000
 #define W 100
 #define M 255
-#define START_RAD 200 // radius^2 (pixels) which will be cleared of rocks when you die
+#define BLAST_RADIUS 200 // radius^2 (pixels) which will be cleared of rocks when you die
diff --git a/main.c b/main.c
index 927de84..8e413bd 100644 (file)
--- a/main.c
+++ b/main.c
@@ -142,7 +142,7 @@ int nships,score,initticks,ticks_since_last, last_ticks;
 int gameover;
 int countdown = 0;
 int maneuver = 0;
 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;
 int tail_plume = 0; // display big engine at the back?
 int friction = 0;      // should there be friction?
 int scorerank;
@@ -599,26 +599,23 @@ int init(int fullscreen) {
                }
        }
 
                }
        }
 
-       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 {
        } else {
-               // Initialise with video only
+               // Initialize with video only
                CONDERROR(SDL_Init(SDL_INIT_VIDEO) != 0);
                atexit(SDL_Quit);
        }
 
                CONDERROR(SDL_Init(SDL_INIT_VIDEO) != 0);
                atexit(SDL_Quit);
        }
 
-       if(oss_sound_flag)
        play_tune(0);
 
        // Attempt to get the required video size
        play_tune(0);
 
        // Attempt to get the required video size
@@ -627,7 +624,7 @@ int init(int fullscreen) {
        surf_screen = SDL_SetVideoMode(XSIZE,YSIZE,16,flag);
 
        // Set the title bar text
        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);
 
 
        NULLERROR(surf_screen);
 
@@ -1051,7 +1048,7 @@ int gameloop() {
                                }
                        } else {
                                if(state == DEAD_PAUSE) {
                                }
                        } 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;
                                        if(xship < 60) xship = 60;
                                        for(i = 0; i<MAXROCKS; i++ ) {
                                                float dx, dy, n;
@@ -1128,7 +1125,7 @@ int gameloop() {
                                                        rock[i].y += (rock[i].yvel*movementrate + yscroll) * 1.01;
                                                }
                                        }
                                                        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;
                                        }
                                                rock[i].active = 0;
                                                rock[i].dead = 0;
                                        }
@@ -1152,10 +1149,8 @@ int gameloop() {
 
 
                        if(draw() && state == GAMEPLAY) {
 
 
                        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;
                                makebangdots(xship,yship,xvel,yvel,surf_ship,30);
                                if(--nships <= 0) {
                                        gameover = 1;
@@ -1259,9 +1254,10 @@ main(int argc, char **argv) {
        fullscreen = 0;
        tail_plume = 0;
        friction = 0;
        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;
                switch(x) {
                        case 'e': // engine
                                tail_plume = 1;
@@ -1274,15 +1270,19 @@ main(int argc, char **argv) {
                                       " -e big tail [E]ngine\n"
                                       " -f [F]ull screen\n"
                                       " -h this [H]elp message\n"
                                       " -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;
                                       " -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
                        case 'p': // physics
                                friction = 1;
                        break;
                        case 's': // silent
-                               oss_sound_flag = 0;
+                               sound_flag = 0;
+                               music_flag = 0;
                        break;
                }
        }
                        break;
                }
        }
diff --git a/sound.c b/sound.c
index 0b8a046..0c72688 100644 (file)
--- a/sound.c
+++ b/sound.c
@@ -4,6 +4,8 @@
 #include <SDL/SDL.h>
 #include <SDL/SDL_mixer.h>
 
 #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)
 
 #define CONDERROR(a) if ((a)) {fprintf(stderr,"Error: %s\n",SDL_GetError());exit(1);}
 #define NULLERROR(a) CONDERROR((a)==NULL)
 
@@ -76,6 +78,7 @@ int init_sound() {/*{{{*/
 }/*}}}*/
 
 void play_sound(int i)  {/*{{{*/
 }/*}}}*/
 
 void play_sound(int i)  {/*{{{*/
+       if(!sound_flag) return;
 #ifdef DEBUG
     printf ("play sound %d on first free channel\n",i);
 #endif
 #ifdef DEBUG
     printf ("play sound %d on first free channel\n",i);
 #endif
@@ -88,6 +91,7 @@ int playing=-1;
 #undef DEBUG
 
 void play_tune(int i) {/*{{{*/
 #undef DEBUG
 
 void play_tune(int i) {/*{{{*/
+       if(!sound_flag || !music_flag) return;
     if (playing==i)
        return;
     if (playing) {
     if (playing==i)
        return;
     if (playing) {