JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
Removed all shields and laser code.
authorJoshua Grams <josh@qualdan.com>
Mon, 13 Dec 2004 19:44:29 +0000 (19:44 +0000)
committerJoshua Grams <josh@qualdan.com>
Mon, 13 Dec 2004 19:44:29 +0000 (19:44 +0000)
Removed dotcollision() function
  (wasn't being used, and didn't work anyway).
Fixed some Makefile stuff which was WRONG
  (but just happened to work in this case).
Moved the defines out to config.h, just for grins.
SVN now ignoring the binary.

Makefile
config.h [new file with mode: 0644]
main.c

index 25b8200..3b0a01c 100644 (file)
--- a/Makefile
+++ b/Makefile
 #   along with this program; if not, write to the Free Software
 #   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 #   along with this program; if not, write to the Free Software
 #   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-VERSION=0.1
-PACKAGENAME=vor
-NEWD=$(PACKAGENAME)-$(VERSION)
-TMP=/tmp
-OPTIONS=-DVERSION=\"$(VERSION)\"
-SOUNDSOURCE=sound
-
-SOUNDLIBRARIES=-lSDL_mixer
-
-LIBRARIES=`sdl-config --libs` -lSDL_image $(SOUNDLIBRARIES)
+ldflags := $(shell sdl-config --libs) -lSDL_image -lSDL_mixer
+cflags := -g $(shell sdl-config --cflags)
 
 INSTALL = install
 INSTALL_PROGRAM = $(INSTALL) -o games -g games
 
 INSTALL = install
 INSTALL_PROGRAM = $(INSTALL) -o games -g games
@@ -35,11 +27,11 @@ PROGRAM_PREFIX = /usr/games/bin
 
 all: vor
 
 
 all: vor
 
-.c.o:
-       cc -c -g $? `sdl-config --cflags` $(OPTIONS)
+%.o: %.c
+       $(CC) $(cflags) -c -o $@ $^
 
 
-vor:   SFont.o $(SOUNDSOURCE).o main.o
-       cc -o $@ $+ $(LIBRARIES)
+vor: SFont.o sound.o main.o
+       $(CC) $(ldflags) -o $@ $^ $(LIBRARIES)
 
 clean:
        rm -f *.o vor
 
 clean:
        rm -f *.o vor
diff --git a/config.h b/config.h
new file mode 100644 (file)
index 0000000..63d143b
--- /dev/null
+++ b/config.h
@@ -0,0 +1,21 @@
+#define VERSION "0.1"
+
+// screen size
+#define XSIZE 640
+#define YSIZE 480
+
+// number of rock image files.
+#define NROCKS 6
+// image file containing font for score stuff.
+#define BIG_FONT_FILE "fonts/score.png"
+
+#define MAXROCKS 120 // MAX Rocks
+#define MAXROCKHEIGHT 100
+#define ROCKRATE 2
+#define MAXBLACKPOINTS 500
+#define MAXENGINEDOTS 5000
+#define MAXBANGDOTS 50000
+#define MAXSPACEDOTS 2000
+#define W 100
+#define M 255
+#define START_RAD_SQ 40000 // radius^2 (pixels) which will be cleared of rocks when you die
diff --git a/main.c b/main.c
index fe58efa..489c352 100644 (file)
--- a/main.c
+++ b/main.c
@@ -25,6 +25,7 @@ extern int font_height;
 void clearBuffer();
 
 // includes {{{
 void clearBuffer();
 
 // includes {{{
+#include "config.h"
 #include <SDL/SDL.h>
 #include <SDL/SDL_image.h>
 #include <stdio.h>
 #include <SDL/SDL.h>
 #include <SDL/SDL_image.h>
 #include <stdio.h>
@@ -40,20 +41,6 @@ void clearBuffer();
 #include "SFont.h"
 // }}}
 // constants {{{
 #include "SFont.h"
 // }}}
 // constants {{{
-#define XSIZE 640
-#define YSIZE 480
-#define NROCKS 6       // Number of rock image files, not number of rocks visible
-#define MAXROCKS 120 // MAX Rocks
-#define MAXROCKHEIGHT 100
-#define ROCKRATE 2
-#define MAXBLACKPOINTS 500
-#define MAXENGINEDOTS 5000
-#define MAXBANGDOTS 50000
-#define MAXSPACEDOTS 2000
-#define W 100
-#define M 255
-#define BIG_FONT_FILE "fonts/score.png"
-#define STARTSPACE 430 // pixels from the left which will be cleared of rocks when you die
 // }}}
 // macros {{{
 #define CONDERROR(a) if((a)) {initerror = strdup(SDL_GetError());return 1;}
 // }}}
 // macros {{{
 #define CONDERROR(a) if((a)) {initerror = strdup(SDL_GetError());return 1;}
@@ -146,15 +133,12 @@ float xship,yship = 240.0;        // X position, 0..XSIZE
 float xvel,yvel;       // Change in X position per tick.
 float rockrate,rockspeed;
 float movementrate;
 float xvel,yvel;       // Change in X position per tick.
 float rockrate,rockspeed;
 float movementrate;
-float shieldlevel, shieldpulse = 0;
 float yscroll;
 
 int nships,score,initticks,ticks_since_last, last_ticks;
 float yscroll;
 
 int nships,score,initticks,ticks_since_last, last_ticks;
-int initialshield, gameover, fast;
+int gameover;
 int countdown = 0;
 int maneuver = 0;
 int countdown = 0;
 int maneuver = 0;
-int laser = 0;
-int shieldsup = 0;
 int oss_sound_flag = 0;
 int tail_plume = 0; // display big engine at the back?
 int friction = 0;      // should there be friction?
 int oss_sound_flag = 0;
 int tail_plume = 0; // display big engine at the back?
 int friction = 0;      // should there be friction?
@@ -196,32 +180,12 @@ extern char *optarg;
 extern int optind, opterr, optopt;
 // }}}
 
 extern int optind, opterr, optopt;
 // }}}
 
-// ************************************* FUNCS
-#ifdef DOTCOLLISION
-int dotcollision(SDL_Surface *s) {
-       int i,j,m;
-       Uint16 *rawpixel, *r;
-
-       /*
-        * Kill all the dots which collide with other objects.
-        * This does not work, it's probably in the wrong place or something.
-        */
-       SDL_LockSurface(s);
-       rawpixel = (Uint16 *) s->pixels;
-       if(bangdotlife > 0 && bangdotlife<80) {
-               for(i = 0; i<nbangdots; i++) {
-                       if(bdot[i].x>0 && bdot[i].x<XSIZE && bdot[i].y>0 && bdot[i].y<YSIZE) {
-                               r = &rawpixel[(int)(s->pitch/2*(int)(bdot[i].y)) + (int)(bdot[i].x)];
-                       if(*r != (bdot[i].c ? bdot[i].c : heatcolor[bangdotlife*2]))
-                               bdot[i].active = 0;
-                       }
-               }
-       }
-       SDL_UnlockSurface(s);
-
-       return;
+float dist_sq(float x1, float y1, float x2, float y2)
+{
+       return (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1);
 }
 }
-#endif
+
+// ************************************* FUNCS
 
 FILE *hs_fopen(char *mode) {
        FILE *f;
 
 FILE *hs_fopen(char *mode) {
        FILE *f;
@@ -314,43 +278,6 @@ void init_space_dots() {
        }
 }
 
        }
 }
 
-int drawlaser() {
-       int i,xc,hitrock;
-       Uint16 c, *rawpixel;
-
-       hitrock = -1;
-       xc = XSIZE;
-       // let xc = x coordinate of the collision between the laser and a space rock
-       // 1. Calculate xc and determine the asteroid that was hit
-       for(i = 0; i<MAXROCKS; i++) {
-               if(rock[i].active) {
-                       if(yship + 12>rock[i].y && yship + 12<rock[i].y + rock[i].image->h && xship + 32<rock[i].x + (rock[i].image->w/2) && rock[i].x + (rock[i].image->w/2) < xc) {
-                               xc = rock[i].x + (rock[i].image->w/2);
-                               hitrock = i;
-                       }
-               }
-       }
-
-       if(hitrock >= 0) {
-               rock[hitrock].heat += movementrate*3;
-       }
-
-       // Plot a number of random dots between xship and XSIZE
-       SDL_LockSurface(surf_screen);
-       rawpixel = (Uint16 *) surf_screen->pixels;
-       c = SDL_MapRGB(surf_ship->format,rnd()*128,128 + rnd()*120,rnd()*128);
-
-       for(i = 0; i<(xc-xship)*5; i += 10) {
-               int x,y;
-               x = rnd()*(xc-(xship + 32)) + xship + 32;
-               y = yship + 12 + (rnd()-0.5)*1.5;
-               rawpixel[surf_screen->pitch/2*y + x] = c;
-       }
-
-       SDL_UnlockSurface(surf_screen);
-}
-
-
 int makebangdots(int xbang, int ybang, int xvel, int yvel, SDL_Surface *s, int power) {
 
        // TODO - stop generating dots after a certain amount of time has passed, to cope with slower CPUs.
 int makebangdots(int xbang, int ybang, int xvel, int yvel, SDL_Surface *s, int power) {
 
        // TODO - stop generating dots after a certain amount of time has passed, to cope with slower CPUs.
@@ -830,11 +757,6 @@ int draw() {
        // Draw the background dots
        drawdots(surf_screen);
 
        // Draw the background dots
        drawdots(surf_screen);
 
-       // If it's firing, draw the laser
-       if(laser) {
-               drawlaser();
-       }
-
        // Draw ship
        if(!gameover && (state == GAMEPLAY || state == DEMO) ) {
                src.w = surf_ship->w;
        // Draw ship
        if(!gameover && (state == GAMEPLAY || state == DEMO) ) {
                src.w = surf_ship->w;
@@ -1011,48 +933,20 @@ int draw() {
        }
 
        if(!gameover && state == GAMEPLAY) {
        }
 
        if(!gameover && state == GAMEPLAY) {
-               // Show the freaky shields
                SDL_LockSurface(surf_screen);
                raw_pixels = (Uint16 *) surf_screen->pixels;
                SDL_LockSurface(surf_screen);
                raw_pixels = (Uint16 *) surf_screen->pixels;
-               if(initialshield>0 || shieldsup && shieldlevel>0) {
-                       int x,y,l;
-                       Uint16 c;
-
-                       if(initialshield>0) {
-                               initialshield -= movementrate;
-                               c = SDL_MapRGB(surf_screen->format,0,255,255);
-                       } else {
-                               c = heatcolor[(int)shieldlevel];
-                               shieldlevel -= movementrate;
-                       }
-
-                       shieldpulse += 0.2;
-                       for(p = black_point; p<blackptr; p++) { 
-                               x = p->x + (int)xship + (rnd() + rnd()-1)*sin(shieldpulse)*4 + 1;
-                               y = p->y + (int)yship + (rnd() + rnd()-1)*sin(shieldpulse)*4 + 1;
-                               if(x>0 && y>0 && x<XSIZE && y<YSIZE) {
-                                       offset = surf_screen->pitch/2 * y + x;
-                                       raw_pixels[offset] = c;
-                               }
-                       }
-               } else {
-                       // When the shields are off, check that the black points 
-                       // on the ship are still black, and not covered up by rocks
-                       for(p = black_point; p<blackptr; p++) { 
-                               offset = surf_screen->pitch/2 * (p->y + (int)yship) + p->x + (int)xship;
-                               if(raw_pixels[offset]) {
-                                       // Set the bang flag
-                                       bang = 1;
-                               }
+               // Check that the black points on the ship are
+               // still black, and not covered up by rocks.
+               for(p = black_point; p<blackptr; p++) { 
+                       offset = surf_screen->pitch/2 * (p->y + (int)yship) + p->x + (int)xship;
+                       if(raw_pixels[offset]) {
+                               // Set the bang flag
+                               bang = 1;
                        }
                }
                SDL_UnlockSurface(surf_screen);
        }
 
                        }
                }
                SDL_UnlockSurface(surf_screen);
        }
 
-#ifdef DOTCOLLISION
-       dotcollision(surf_screen); // Kill dots that are not on their spots
-#endif
-
        // Draw all the little ships
        if(state == GAMEPLAY || state == DEAD_PAUSE || state == GAME_OVER)
        for(i = 0; i<nships-1; i++) {
        // Draw all the little ships
        if(state == GAMEPLAY || state == DEAD_PAUSE || state == GAME_OVER)
        for(i = 0; i<nships-1; i++) {
@@ -1107,14 +1001,12 @@ int gameloop() {
                                                // Create a new ship and start all over again
                                                state = GAMEPLAY;
                                                play_tune(1);
                                                // Create a new ship and start all over again
                                                state = GAMEPLAY;
                                                play_tune(1);
-                                               initialshield = 0;
                                                xship = 10;
                                                yship = YSIZE/2;
                                                xvel = 3;
                                                yvel = 0;
                                                xship = 10;
                                                yship = YSIZE/2;
                                                xvel = 3;
                                                yvel = 0;
-                                               shieldlevel = 3*W;
                                                for(i = 0; i<MAXROCKS; i++ ) {
                                                for(i = 0; i<MAXROCKS; i++ ) {
-                                                       if(rock[i].x < STARTSPACE) {
+                                                       if(dist_sq(xship, yship, rock[i].x, rock[i].y) < START_RAD_SQ) {
                                                                rock[i].active = 0;
                                                        }
                                                }
                                                                rock[i].active = 0;
                                                        }
                                                }
@@ -1283,13 +1175,10 @@ int gameloop() {
                                yvel = 0;
                                xship = 0;
                                yship = YSIZE/2;
                                yvel = 0;
                                xship = 0;
                                yship = YSIZE/2;
-                               shieldlevel = 3*W;
-                               initialshield = 0;
 
                        }
 
                        maneuver = 0;
 
                        }
 
                        maneuver = 0;
-                       laser = 0;
                } else {
                        SDL_PumpEvents();
                        keystate = SDL_GetKeyState(NULL);
                } else {
                        SDL_PumpEvents();
                        keystate = SDL_GetKeyState(NULL);
@@ -1329,7 +1218,6 @@ int gameloop() {
 
                        }
                        else {
 
                        }
                        else {
-                               shieldsup = 0;
                                paused = 0;
                                pausedown = 0;
                        }
                                paused = 0;
                                pausedown = 0;
                        }
@@ -1358,10 +1246,10 @@ main(int argc, char **argv) {
                        break;
                        case 'h': // help
                                printf("Variations on RockDodger\n"
                        break;
                        case 'h': // help
                                printf("Variations on RockDodger\n"
-                                      " -e Big tail [E]ngine\n"
+                                      " -e big tail [E]ngine\n"
                                       " -f [F]ull screen\n"
                                       " -f [F]ull screen\n"
-                                      " -h This [H]elp message\n"
-                                      " -p Stupid original [P]hysics (friction)\n"
+                                      " -h this [H]elp message\n"
+                                      " -p original [P]hysics (friction)\n"
                                       " -s [S]ilent (no sound)\n");
                                exit(0);
                        break;
                                       " -s [S]ilent (no sound)\n");
                                exit(0);
                        break;