Got questions, comments, patches, etc.?
Contact Jason Woofenden
gitweb
/
vor.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
markdownify readmes
[vor.git]
/
main.c
diff --git
a/main.c
b/main.c
index
4a482fc
..
0af1fdd
100644
(file)
--- a/
main.c
+++ b/
main.c
@@
-32,6
+32,7
@@
#include "args.h"
#include "common.h"
#include "args.h"
#include "common.h"
+#include <config.h>
#include "vorconfig.h"
#include "dust.h"
#include "file.h"
#include "vorconfig.h"
#include "dust.h"
#include "file.h"
@@
-60,6
+61,9
@@
SDL_Surface
font *g_font;
font *g_font;
+#define ENGINEDOT 0
+#define BANGDOT 1
+
struct dot {
int active;
float x, y;
struct dot {
int active;
float x, y;
@@
-67,6
+71,7
@@
struct dot {
float mass; // in DOT_MASS_UNITs
float decay; // rate at which to reduce mass.
int heat; // heat multiplier (color).
float mass; // in DOT_MASS_UNITs
float decay; // rate at which to reduce mass.
int heat; // heat multiplier (color).
+ uint8_t type; // BANGDOT or ENGINEDOT
};
void draw(void);
};
void draw(void);
@@
-117,12
+122,12
@@
char *msgs[2][3] = {
{
"Press SPACE for normal game",
"Press '1' for easy game",
{
"Press SPACE for normal game",
"Press '1' for easy game",
- "http://jasonwoof.org/vor"
+ "https://sametwice.com/vor"
},
{
"Press SPACE for easy game",
"Press '2' for normal game",
},
{
"Press SPACE for easy game",
"Press '2' for normal game",
- "http://jasonwoof.org/vor"
+ "https://sametwice.com/vor"
}
};
}
};
@@
-137,6
+142,7
@@
extern int optind, opterr, optopt;
// ************************************* FUNCS
// ************************************* FUNCS
+#ifdef HAVE_NANOSLEEP
void
tiny_sleep() {
struct timespec t;
void
tiny_sleep() {
struct timespec t;
@@
-144,12
+150,20
@@
tiny_sleep() {
t.tv_nsec = 1;
nanosleep(&t, 0);
}
t.tv_nsec = 1;
nanosleep(&t, 0);
}
+#else
+#define tiny_sleep()
+#endif
void
void
-init_engine_dots() {
+init_dots() {
int i;
for(i = 0; i<MAXENGINEDOTS; i++) {
edot[i].active = 0;
int i;
for(i = 0; i<MAXENGINEDOTS; i++) {
edot[i].active = 0;
+ edot[i].type = ENGINEDOT;
+ }
+ for(i = 0; i<MAXBANGDOTS; i++) {
+ bdot[i].active = 0;
+ bdot[i].type = BANGDOT;
}
}
}
}
@@
-273,6
+287,10
@@
new_bang_dots(struct sprite *s)
if(SDL_MUSTLOCK(img)) { SDL_UnlockSurface(img); }
}
if(SDL_MUSTLOCK(img)) { SDL_UnlockSurface(img); }
}
+void
+kill_rock(struct rock *r) {
+ r->x = -200;
+}
void
move_dot(struct dot *d)
void
move_dot(struct dot *d)
@@
-291,6
+309,13
@@
move_dot(struct dot *d)
if(hit) if(hit->type != SHIP) {
d->active = 0;
mass = sprite_mass(hit);
if(hit) if(hit->type != SHIP) {
d->active = 0;
mass = sprite_mass(hit);
+ if(d->type == BANGDOT) {
+ struct rock *rock = (struct rock*)hit;
+ rock->life -= (d->dx - hit->dx) * (d->dx - hit->dx) + (d->dy - hit->dy) * (d->dy - hit->dy);
+ if(rock->life < 0) {
+ kill_rock(rock);
+ }
+ }
hit->dx += DOT_MASS_UNIT * d->mass * (d->dx - hit->dx) / mass;
hit->dy += DOT_MASS_UNIT * d->mass * (d->dy - hit->dy) / mass;
}
hit->dx += DOT_MASS_UNIT * d->mass * (d->dx - hit->dx) / mass;
hit->dy += DOT_MASS_UNIT * d->mass * (d->dy - hit->dy) / mass;
}
@@
-446,7
+471,7
@@
init(void) {
exit(1);
}
exit(1);
}
- init_engine_dots();
+ init_dots();
init_dust();
init_sprites();
init_dust();
init_sprites();
@@
-530,7
+555,7
@@
draw_title_page(void)
x = (XSIZE-font_width(text))/2 + cos(fadetimer/4.5)*10;
font_write(x,YSIZE-100 + cos(fadetimer/3)*5,text);
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);
}
x = (XSIZE-font_width(text))/2 + sin(fadetimer/4.5)*10;
font_write(x,YSIZE-50 + sin(fadetimer/2)*5,text);
}
@@
-707,6
+732,12
@@
gameloop() {
SDL_SaveBMP(surf_screen, screenshot_filename);
}
break;
SDL_SaveBMP(surf_screen, screenshot_filename);
}
break;
+ case SDLK_SPACE:
+ if(state != GAMEPLAY && state != DEAD_PAUSE) {
+ // don't conflict with space key to start a new game
+ break;
+ }
+ // else fall through
case SDLK_p:
case SDLK_PAUSE:
paused = !paused;
case SDLK_p:
case SDLK_PAUSE:
paused = !paused;