#include "screen.h"
#include "sound.h"
#include "setup.h"
+#include "high_scores.h"
/* Sound files: */
/* Local variables: */
-int score, distros, level, lives, scroll_x, next_level,
+int score, highscore, distros, level, lives, scroll_x, next_level,
tux_dir, tux_size, tux_duck, tux_x, tux_xm, tux_y, tux_ym,
tux_dying, tux_safe, jumping, jump_counter, frame, score_multiplier,
tux_frame_main, tux_frame, tux_got_coffee, tux_skidding,
void add_upgrade(int x, int y, int kind);
void killtux(int mode);
void add_bullet(int x, int y, int dir, int xm);
+void drawendscreen(void);
/* --- GAME LOOP! --- */
loadlevel();
loadlevelgfx();
loadlevelsong();
+ highscore = load_hs();
/* --- MAIN GAME LOOP!!! --- */
/* No more lives!? */
- if (lives <= 0)
+ if (lives < 0)
{
+ drawendscreen();
+ if (score > highscore)
+ save_hs(score);
- /* Display end-of-level stuff */
- /* (FIXME: This should go in its own event loop function!) */
-
- clearscreen(0, 0, 0);
-
- drawcenteredtext("GAMEOVER", 200, letters_red, NO_UPDATE);
-
- sprintf(str, "SCORE: %d", score);
- drawcenteredtext(str, 224, letters_gold, NO_UPDATE);
-
- sprintf(str, "DISTROS: %d", distros);
- drawcenteredtext(str, 256, letters_blue, NO_UPDATE);
-
- SDL_Flip(screen);
- SDL_Delay(5000);
-
-
- /* FIXME: Should return to title screen, not restart game... */
-
- level = 0;
- lives = 3;
-
- score=0;
- distros=0;
+ return(0);
}
sprintf(str, "%d", score);
drawtext("SCORE", 0, 0, letters_blue, NO_UPDATE);
drawtext(str, 96, 0, letters_gold, NO_UPDATE);
+
+ sprintf(str, "%d", highscore);
+ drawtext("HIGH", 0, 20, letters_blue, NO_UPDATE);
+ drawtext(str, 96, 20, letters_gold, NO_UPDATE);
if (time_left >= 50 || (frame % 10) < 5)
{
clearscreen(0, 0, 0);
- sprintf(str, "LEVEL %d", level + 1);
+ sprintf(str, "LEVEL %d", level);
drawcenteredtext(str, 200, letters_red, NO_UPDATE);
sprintf(str, "%s", levelname);
}
+/* Load a level-specific graphic... */
+
+SDL_Surface * load_level_image(char * file, int use_alpha)
+{
+ char fname[1024];
+
+ snprintf(fname, 1024, "%s/images/level%d/%s", DATA_PREFIX, level, file);
+
+ return(load_image(fname, use_alpha));
+}
+
+
/* Load graphics: */
void loadlevelgfx(void)
{
- img_brick[0] = load_image(DATA_PREFIX "/images/level1/brick0.png",
- IGNORE_ALPHA);
- img_brick[1] = load_image(DATA_PREFIX "/images/level1/brick1.png",
- IGNORE_ALPHA);
-
- img_solid[0] = load_image(DATA_PREFIX "/images/level1/solid0.png",
- USE_ALPHA);
- img_solid[1] = load_image(DATA_PREFIX "/images/level1/solid1.png",
- USE_ALPHA);
- img_solid[2] = load_image(DATA_PREFIX "/images/level1/solid2.png",
- USE_ALPHA);
- img_solid[3] = load_image(DATA_PREFIX "/images/level1/solid3.png",
- USE_ALPHA);
-
- img_bkgd[0][0] = load_image(DATA_PREFIX "/images/level1/bkgd-00.png",
- USE_ALPHA);
- img_bkgd[0][1] = load_image(DATA_PREFIX "/images/level1/bkgd-01.png",
- USE_ALPHA);
- img_bkgd[0][2] = load_image(DATA_PREFIX "/images/level1/bkgd-02.png",
- USE_ALPHA);
- img_bkgd[0][3] = load_image(DATA_PREFIX "/images/level1/bkgd-03.png",
- USE_ALPHA);
-
- img_bkgd[1][0] = load_image(DATA_PREFIX "/images/level1/bkgd-10.png",
- USE_ALPHA);
- img_bkgd[1][1] = load_image(DATA_PREFIX "/images/level1/bkgd-11.png",
- USE_ALPHA);
- img_bkgd[1][2] = load_image(DATA_PREFIX "/images/level1/bkgd-12.png",
- USE_ALPHA);
- img_bkgd[1][3] = load_image(DATA_PREFIX "/images/level1/bkgd-13.png",
- USE_ALPHA);
+ img_brick[0] = load_level_image("brick0.png", IGNORE_ALPHA);
+ img_brick[1] = load_level_image("brick1.png", IGNORE_ALPHA);
+
+ img_solid[0] = load_level_image("solid0.png", USE_ALPHA);
+ img_solid[1] = load_level_image("solid1.png", USE_ALPHA);
+ img_solid[2] = load_level_image("solid2.png", USE_ALPHA);
+ img_solid[3] = load_level_image("solid3.png", USE_ALPHA);
+
+ img_bkgd[0][0] = load_level_image("bkgd-00.png", USE_ALPHA);
+ img_bkgd[0][1] = load_level_image("bkgd-01.png", USE_ALPHA);
+ img_bkgd[0][2] = load_level_image("bkgd-02.png", USE_ALPHA);
+ img_bkgd[0][3] = load_level_image("bkgd-03.png", USE_ALPHA);
+
+ img_bkgd[1][0] = load_level_image("bkgd-10.png", USE_ALPHA);
+ img_bkgd[1][1] = load_level_image("bkgd-11.png", USE_ALPHA);
+ img_bkgd[1][2] = load_level_image("bkgd-12.png", USE_ALPHA);
+ img_bkgd[1][3] = load_level_image("bkgd-13.png", USE_ALPHA);
}
#endif
}
}
+
+
+void drawendscreen(void)
+{
+ char str[80];
+
+ clearscreen(0, 0, 0);
+
+ drawcenteredtext("GAMEOVER", 200, letters_red, NO_UPDATE);
+
+ sprintf(str, "SCORE: %d", score);
+ drawcenteredtext(str, 224, letters_gold, NO_UPDATE);
+
+ sprintf(str, "DISTROS: %d", distros);
+ drawcenteredtext(str, 256, letters_blue, NO_UPDATE);
+
+ SDL_Flip(screen);
+ SDL_Delay(2000);
+}
+