}
void
+init_score_entry(void)
+{
+ SDL_Event e;
+ state = HIGH_SCORE_ENTRY;
+ state_timeout = 5.0e6;
+ SDL_EnableUNICODE(1);
+ while(SDL_PollEvent(&e))
+ ;
+}
+
+void
gameloop() {
Uint8 *keystate = SDL_GetKeyState(NULL);
float tmp;
play_tune(TUNE_GAMEPLAY);
break;
case GAME_OVER:
- if(new_high_score(score)) {
- SDL_Event e;
- state = HIGH_SCORE_ENTRY;
- state_timeout = 5.0e6;
- SDL_EnableUNICODE(1);
- while(SDL_PollEvent(&e))
- ;
- } else {
+ if(new_high_score(score)) init_score_entry();
+ else {
state = HIGH_SCORE_DISPLAY;
state_timeout = 400;
}
&& (state == HIGH_SCORE_DISPLAY
|| state == TITLE_PAGE
|| state == GAME_OVER)) {
- reset_sprites();
- reset_rocks();
- screendx = SCREENDXMIN; screendy = 0;
-
- ship.x = XSIZE/2.2; ship.y = YSIZE/2;
- ship.dx = screendx; ship.dy = screendy;
- ship.lives = 4;
- ship.flags = MOVE|DRAW|COLLIDE;
- SDL_SetAlpha(ship.image, SDL_SRCALPHA, SDL_ALPHA_OPAQUE);
- add_sprite(SPRITE(&ship));
-
- score = 0;
-
- state = GAMEPLAY;
- play_tune(TUNE_GAMEPLAY);
+ if(state == GAME_OVER && new_high_score(score))
+ init_score_entry();
+ else {
+ reset_sprites();
+ reset_rocks();
+ screendx = SCREENDXMIN; screendy = 0;
+
+ ship.x = XSIZE/2.2; ship.y = YSIZE/2;
+ ship.dx = screendx; ship.dy = screendy;
+ ship.lives = 4;
+ ship.flags = MOVE|DRAW|COLLIDE;
+ SDL_SetAlpha(ship.image, SDL_SRCALPHA, SDL_ALPHA_OPAQUE);
+ add_sprite(SPRITE(&ship));
+
+ score = 0;
+
+ state = GAMEPLAY;
+ play_tune(TUNE_GAMEPLAY);
+ }
}
ship.jets = 0;
}
- if(state == GAMEPLAY || state == DEAD_PAUSE) {
+ if(state == GAMEPLAY) {
if(!paused) {
if(keystate[SDLK_LEFT] | keystate[SDLK_h]) { ship.dx -= 1.5*t_frame; ship.jets |= 1<<0;}
if(keystate[SDLK_DOWN] | keystate[SDLK_t]) { ship.dy += 1.5*t_frame; ship.jets |= 1<<1;}