* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#ifndef WIN32
-# include <argp.h>
-#endif
#include <math.h>
#include <SDL.h>
#include <SDL_image.h>
#include "sprite.h"
#include "sound.h"
+#ifdef WIN32
+#define SDL_SetAlpha(surf, flag, alpha)
+#endif
+
// ************************************* VARS
// SDL_Surface global variables
SDL_Surface
void
new_bang_dots(int xbang, int ybang, int dx, int dy, SDL_Surface *s)
{
- int x,y,endcount;
- uint16_t *pixel,c;
+ int i, x, y;
+ uint16_t *pixel, c;
uint32_t colorkey;
int row_inc;
- double theta,r;
- int begin_generate;
+ double theta, r;
- begin_generate = SDL_GetTicks();
pixel = s->pixels;
row_inc = s->pitch/sizeof(uint16_t) - s->w;
colorkey = s->format->colorkey;
SDL_LockSurface(s);
- endcount = 0;
- while (endcount<3) {
+ for(i=0; i<10; i++) {
pixel = s->pixels;
for(y=0; y<s->h; y++) {
for(x = 0; x<s->w; x++) {
if(c && c != colorkey) {
theta = frnd()*M_PI*2;
r = frnd(); r = 1 - r*r;
- // r = 1 - frnd()*frnd();
bdot[bd2].dx = 45*r*cos(theta) + dx;
bdot[bd2].dy = 45*r*sin(theta) + dy;
bdot[bd2].active = 1;
// Replace the last few bang dots with the pixels from the exploding object
- if(endcount>0) bdot[bd2].c = c;
+ if(i>6) bdot[bd2].c = c;
bd2 = (bd2+1) % MAXBANGDOTS;
}
pixel += row_inc;
}
}
- if(SDL_GetTicks() - begin_generate > 7) endcount++;
}
SDL_UnlockSurface(s);
// Create engine dots out the side we're moving from
for(m = 0; m<4; m++) {
if(ship.jets & 1<<m) { // 'jets' is a bit field
- new_engine_dots(80,m);
+ new_engine_dots(200.0*t_frame,m);
}
}
case HIGH_SCORE_ENTRY:
play_tune(TUNE_HIGH_SCORE_ENTRY);
- if(!process_score_input()) { // done inputting name
-
- // Change state to briefly show high scores page
- state = HIGH_SCORE_DISPLAY;
- state_timeout = 200;
-
- // Write the high score table to the file
- write_high_score_table();
-
- play_tune(TUNE_TITLE_PAGE);
- }
// FALL THROUGH TO
case HIGH_SCORE_DISPLAY:
// Display de list o high scores mon.
void
gameloop() {
- Uint8 *keystate = SDL_GetKeyState(NULL);
+ SDL_Event e;
+ Uint8 *keystate;
float tmp;
for(;;) {
- SDL_PumpEvents();
+ while(SDL_PollEvent(&e)) {
+ switch(e.type) {
+ case SDL_QUIT: return;
+ case SDL_KEYUP:
+ if(e.key.keysym.sym == SDLK_ESCAPE
+ || e.key.keysym.sym == SDLK_q)
+ return;
+ break;
+ case SDL_KEYDOWN:
+ if(state == HIGH_SCORE_ENTRY)
+ if(!process_score_input(&e.key.keysym)) {
+ // Write the high score table to the file
+ write_high_score_table();
+ // continue to display the scores briefly
+ state = HIGH_SCORE_DISPLAY;
+ state_timeout = 200;
+ play_tune(TUNE_TITLE_PAGE);
+ }
+ break;
+ }
+ }
keystate = SDL_GetKeyState(NULL);
if(!paused) {
state = HIGH_SCORE_DISPLAY;
state_timeout = 400;
}
-
- if(state != HIGH_SCORE_ENTRY && (keystate[SDLK_q] || keystate[SDLK_ESCAPE]))
- return;
-
}
}
int
main(int argc, char **argv) {
- init_opts();
-#ifndef WIN32
- argp_parse(&argp, argc, argv, 0, 0, 0);
-#endif
+ if(!parse_opts(argc, argv)) return 1;
if(init()) {
printf ("ta: '%s'\n",initerror);