From fac9f096e69b8e1594a90796ec8dcf222fc1b6e3 Mon Sep 17 00:00:00 2001 From: Joshua Grams Date: Mon, 13 Dec 2004 19:44:29 +0000 Subject: [PATCH] Removed all shields and laser code. 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 | 20 +++------ config.h | 21 +++++++++ main.c | 148 ++++++++------------------------------------------------------ 3 files changed, 45 insertions(+), 144 deletions(-) create mode 100644 config.h diff --git a/Makefile b/Makefile index 25b8200..3b0a01c 100644 --- a/Makefile +++ b/Makefile @@ -15,16 +15,8 @@ # 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 @@ -35,11 +27,11 @@ PROGRAM_PREFIX = /usr/games/bin 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 diff --git a/config.h b/config.h new file mode 100644 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 --- a/main.c +++ b/main.c @@ -25,6 +25,7 @@ extern int font_height; void clearBuffer(); // includes {{{ +#include "config.h" #include #include #include @@ -40,20 +41,6 @@ void clearBuffer(); #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;} @@ -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 shieldlevel, shieldpulse = 0; float yscroll; int nships,score,initticks,ticks_since_last, last_ticks; -int initialshield, gameover, fast; +int gameover; 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? @@ -196,32 +180,12 @@ extern char *optarg; 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; i0 && bdot[i].x0 && bdot[i].ypitch/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; @@ -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; irock[i].y && yship + 12h && xship + 32w/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. @@ -830,11 +757,6 @@ int draw() { // 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; @@ -1011,48 +933,20 @@ int draw() { } if(!gameover && state == GAMEPLAY) { - // Show the freaky shields 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; px + (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 && xpitch/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; ppitch/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; ppitch/2 * (p->y + (int)yship) + p->x + (int)xship; + if(raw_pixels[offset]) { + // Set the bang flag + bang = 1; } } 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