bill@newbreedsoftware.com
http://www.newbreedsoftware.com/supertux/
- April 11, 2000 - December 28, 2003
+ April 11, 2000 - December 29, 2003
*/
#include <stdio.h>
* img_super_bkgd, * img_bullet, * img_red_glow;
SDL_Surface * img_cloud[2][4];
SDL_Surface * tux_life,
- * tux_right[3], * tux_left[3],
- * bigtux_right[3], * bigtux_left[3],
- * bigtux_right_jump, * bigtux_left_jump,
- * ducktux_right, * ducktux_left,
- * skidtux_right, * skidtux_left,
- * firetux_right[3], * firetux_left[3],
- * bigfiretux_right[3], * bigfiretux_left[3],
- * bigfiretux_right_jump, * bigfiretux_left_jump,
- * duckfiretux_right, * duckfiretux_left,
- * skidfiretux_right, * skidfiretux_left,
- * cape_right[2], * cape_left[2],
- * bigcape_right[2], * bigcape_left[2];
+* tux_right[3], * tux_left[3],
+* bigtux_right[3], * bigtux_left[3],
+* bigtux_right_jump, * bigtux_left_jump,
+* ducktux_right, * ducktux_left,
+* skidtux_right, * skidtux_left,
+* firetux_right[3], * firetux_left[3],
+* bigfiretux_right[3], * bigfiretux_left[3],
+* bigfiretux_right_jump, * bigfiretux_left_jump,
+* duckfiretux_right, * duckfiretux_left,
+* skidfiretux_right, * skidfiretux_left,
+* cape_right[2], * cape_left[2],
+* bigcape_right[2], * bigcape_left[2];
SDL_Event event;
SDL_Rect src, dest;
SDLKey key;
/* Keep tux in bounds: */
if (tux_x < 0)
tux_x = 0;
- else if (tux_x < 160 && scroll_x > 0 && debug_mode == YES)
+ else if (tux_x < 160 && scroll_x > 0 && debug_mode == YES)
{
- scroll_x = scroll_x - ( 160 - tux_x);
- tux_x = 160;
-
- if(scroll_x < 0)
- scroll_x = 0;
-
+ scroll_x = scroll_x - ( 160 - tux_x);
+ tux_x = 160;
+
+ if(scroll_x < 0)
+ scroll_x = 0;
+
}
- else if (tux_x > 320 && scroll_x < ((level_width * 32) - 640))
+ else if (tux_x > 320 && scroll_x < ((level_width * 32) - 640))
{
/* Scroll the screen in past center: */
}
if (!playing_music())
- {
- if (time_left <= TIME_WARNING)
- play_music( level_song_fast, 1 );
- else
- play_music( level_song, 1 );
- }
-
+ {
+ if (time_left <= TIME_WARNING)
+ play_music( level_song_fast, 1 );
+ else
+ play_music( level_song, 1 );
+ }
+
if (tux_invincible_time > 0)
tux_invincible_time--;
}
}
- if (!tux_got_coffee)
- {
- if (tux_dir == RIGHT)
- {
- drawimage(tux_right[tux_frame], tux_x, tux_y, NO_UPDATE);
- }
- else
- {
- drawimage(tux_left[tux_frame], tux_x, tux_y, NO_UPDATE);
- }
- }
- else
- {
- /* Tux got coffee! */
-
- if (tux_dir == RIGHT)
- {
- drawimage(firetux_right[tux_frame], tux_x, tux_y, NO_UPDATE);
- }
- else
- {
- drawimage(firetux_left[tux_frame], tux_x, tux_y, NO_UPDATE);
- }
- }
+ if (!tux_got_coffee)
+ {
+ if (tux_dir == RIGHT)
+ {
+ drawimage(tux_right[tux_frame], tux_x, tux_y, NO_UPDATE);
+ }
+ else
+ {
+ drawimage(tux_left[tux_frame], tux_x, tux_y, NO_UPDATE);
+ }
+ }
+ else
+ {
+ /* Tux got coffee! */
+
+ if (tux_dir == RIGHT)
+ {
+ drawimage(firetux_right[tux_frame], tux_x, tux_y, NO_UPDATE);
+ }
+ else
+ {
+ drawimage(firetux_left[tux_frame], tux_x, tux_y, NO_UPDATE);
+ }
+ }
}
else
{
}
}
- if (!tux_got_coffee)
- {
- if (!tux_duck)
- {
- if (!tux_skidding)
- {
- if (!jumping || tux_ym > 0)
- {
- if (tux_dir == RIGHT)
- {
- drawimage(bigtux_right[tux_frame],
- tux_x - 8, tux_y - 32,
- NO_UPDATE);
- }
- else
- {
- drawimage(bigtux_left[tux_frame],
- tux_x - 8, tux_y - 32,
- NO_UPDATE);
- }
- }
- else
- {
- if (tux_dir == RIGHT)
- {
- drawimage(bigtux_right_jump,
- tux_x - 8, tux_y - 32,
- NO_UPDATE);
- }
- else
- {
- drawimage(bigtux_left_jump,
- tux_x - 8, tux_y - 32,
- NO_UPDATE);
- }
- }
- }
- else
- {
- if (tux_dir == RIGHT)
- {
- drawimage(skidtux_right,
- tux_x - 8, tux_y - 32,
- NO_UPDATE);
- }
- else
- {
- drawimage(skidtux_left,
- tux_x - 8, tux_y - 32,
- NO_UPDATE);
- }
- }
- }
- else
- {
- if (tux_dir == RIGHT)
- {
- drawimage(ducktux_right, tux_x - 8, tux_y - 16,
- NO_UPDATE);
- }
- else
- {
- drawimage(ducktux_left, tux_x - 8, tux_y - 16,
- NO_UPDATE);
- }
- }
- }
- else
- {
- /* Tux has coffee! */
-
- if (!tux_duck)
- {
- if (!tux_skidding)
- {
- if (!jumping || tux_ym > 0)
- {
- if (tux_dir == RIGHT)
- {
- drawimage(bigfiretux_right[tux_frame],
- tux_x - 8, tux_y - 32,
- NO_UPDATE);
- }
- else
- {
- drawimage(bigfiretux_left[tux_frame],
- tux_x - 8, tux_y - 32,
- NO_UPDATE);
- }
- }
- else
- {
- if (tux_dir == RIGHT)
- {
- drawimage(bigfiretux_right_jump,
- tux_x - 8, tux_y - 32,
- NO_UPDATE);
- }
- else
- {
- drawimage(bigfiretux_left_jump,
- tux_x - 8, tux_y - 32,
- NO_UPDATE);
- }
- }
- }
- else
- {
- if (tux_dir == RIGHT)
- {
- drawimage(skidfiretux_right,
- tux_x - 8, tux_y - 32,
- NO_UPDATE);
- }
- else
- {
- drawimage(skidfiretux_left,
- tux_x - 8, tux_y - 32,
- NO_UPDATE);
- }
- }
- }
- else
- {
- if (tux_dir == RIGHT)
- {
- drawimage(duckfiretux_right, tux_x - 8, tux_y - 16,
- NO_UPDATE);
- }
- else
- {
- drawimage(duckfiretux_left, tux_x - 8, tux_y - 16,
- NO_UPDATE);
- }
- }
- }
- }
+ if (!tux_got_coffee)
+ {
+ if (!tux_duck)
+ {
+ if (!tux_skidding)
+ {
+ if (!jumping || tux_ym > 0)
+ {
+ if (tux_dir == RIGHT)
+ {
+ drawimage(bigtux_right[tux_frame],
+ tux_x - 8, tux_y - 32,
+ NO_UPDATE);
+ }
+ else
+ {
+ drawimage(bigtux_left[tux_frame],
+ tux_x - 8, tux_y - 32,
+ NO_UPDATE);
+ }
+ }
+ else
+ {
+ if (tux_dir == RIGHT)
+ {
+ drawimage(bigtux_right_jump,
+ tux_x - 8, tux_y - 32,
+ NO_UPDATE);
+ }
+ else
+ {
+ drawimage(bigtux_left_jump,
+ tux_x - 8, tux_y - 32,
+ NO_UPDATE);
+ }
+ }
+ }
+ else
+ {
+ if (tux_dir == RIGHT)
+ {
+ drawimage(skidtux_right,
+ tux_x - 8, tux_y - 32,
+ NO_UPDATE);
+ }
+ else
+ {
+ drawimage(skidtux_left,
+ tux_x - 8, tux_y - 32,
+ NO_UPDATE);
+ }
+ }
+ }
+ else
+ {
+ if (tux_dir == RIGHT)
+ {
+ drawimage(ducktux_right, tux_x - 8, tux_y - 16,
+ NO_UPDATE);
+ }
+ else
+ {
+ drawimage(ducktux_left, tux_x - 8, tux_y - 16,
+ NO_UPDATE);
+ }
+ }
+ }
+ else
+ {
+ /* Tux has coffee! */
+
+ if (!tux_duck)
+ {
+ if (!tux_skidding)
+ {
+ if (!jumping || tux_ym > 0)
+ {
+ if (tux_dir == RIGHT)
+ {
+ drawimage(bigfiretux_right[tux_frame],
+ tux_x - 8, tux_y - 32,
+ NO_UPDATE);
+ }
+ else
+ {
+ drawimage(bigfiretux_left[tux_frame],
+ tux_x - 8, tux_y - 32,
+ NO_UPDATE);
+ }
+ }
+ else
+ {
+ if (tux_dir == RIGHT)
+ {
+ drawimage(bigfiretux_right_jump,
+ tux_x - 8, tux_y - 32,
+ NO_UPDATE);
+ }
+ else
+ {
+ drawimage(bigfiretux_left_jump,
+ tux_x - 8, tux_y - 32,
+ NO_UPDATE);
+ }
+ }
+ }
+ else
+ {
+ if (tux_dir == RIGHT)
+ {
+ drawimage(skidfiretux_right,
+ tux_x - 8, tux_y - 32,
+ NO_UPDATE);
+ }
+ else
+ {
+ drawimage(skidfiretux_left,
+ tux_x - 8, tux_y - 32,
+ NO_UPDATE);
+ }
+ }
+ }
+ else
+ {
+ if (tux_dir == RIGHT)
+ {
+ drawimage(duckfiretux_right, tux_x - 8, tux_y - 16,
+ NO_UPDATE);
+ }
+ else
+ {
+ drawimage(duckfiretux_left, tux_x - 8, tux_y - 16,
+ NO_UPDATE);
+ }
+ }
+ }
+ }
}
drawtext(str,
floating_scores[i].x + 16 - strlen(str) * 8,
floating_scores[i].y,
- letters_gold, NO_UPDATE);
+ letters_gold, NO_UPDATE, 1);
}
}
/* (Status): */
sprintf(str, "%d", score);
- drawtext("SCORE", 0, 0, letters_blue, NO_UPDATE);
- drawtext(str, 96, 0, letters_gold, NO_UPDATE);
+ drawtext("SCORE", 0, 0, letters_blue, NO_UPDATE, 1);
+ drawtext(str, 96, 0, letters_gold, NO_UPDATE, 1);
sprintf(str, "%d", highscore);
- drawtext("HIGH", 0, 20, letters_blue, NO_UPDATE);
- drawtext(str, 96, 20, letters_gold, NO_UPDATE);
+ drawtext("HIGH", 0, 20, letters_blue, NO_UPDATE, 1);
+ drawtext(str, 96, 20, letters_gold, NO_UPDATE, 1);
if (time_left >= TIME_WARNING || (frame % 10) < 5)
{
sprintf(str, "%d", time_left);
- drawtext("TIME", 224, 0, letters_blue, NO_UPDATE);
- drawtext(str, 304, 0, letters_gold, NO_UPDATE);
+ drawtext("TIME", 224, 0, letters_blue, NO_UPDATE, 1);
+ drawtext(str, 304, 0, letters_gold, NO_UPDATE, 1);
}
sprintf(str, "%d", distros);
- drawtext("DISTROS", 480, 0, letters_blue, NO_UPDATE);
- drawtext(str, 608, 0, letters_gold, NO_UPDATE);
+ drawtext("DISTROS", 480, 0, letters_blue, NO_UPDATE, 1);
+ drawtext(str, 608, 0, letters_gold, NO_UPDATE, 1);
- drawtext("LIVES", 480, 20, letters_blue, NO_UPDATE);
+ drawtext("LIVES", 480, 20, letters_blue, NO_UPDATE, 1);
for(i=0; i < lives; ++i)
{
drawimage(tux_life,565+(18*i),20,NO_UPDATE);
}
-
+
if(game_pause)
- drawcenteredtext("PAUSE",230,letters_red, NO_UPDATE);
+ drawcenteredtext("PAUSE",230,letters_red, NO_UPDATE, 1);
if(show_menu)
done = drawmenu();
switch (current_music)
{
case LEVEL_MUSIC:
- if (time_left <= TIME_WARNING)
+ if (time_left <= TIME_WARNING)
play_music(level_song_fast, 1);
- else
+ else
play_music(level_song, 1);
break;
case HERRING_MUSIC:
now_time = SDL_GetTicks();
if (now_time < last_time + FPS)
- SDL_Delay(last_time + FPS - now_time);
+ SDL_Delay(last_time + FPS - now_time);
/* Handle time: */
{
time_left--;
- /* Stop the music; it will start again, faster! */
- if (time_left == TIME_WARNING)
- halt_music();
+ /* Stop the music; it will start again, faster! */
+ if (time_left == TIME_WARNING)
+ halt_music();
if (time_left <= 0)
killtux(KILL);
clearscreen(0, 0, 0);
sprintf(str, "LEVEL %d", level);
- drawcenteredtext(str, 200, letters_red, NO_UPDATE);
+ drawcenteredtext(str, 200, letters_red, NO_UPDATE, 1);
sprintf(str, "%s", levelname);
- drawcenteredtext(str, 224, letters_gold, NO_UPDATE);
+ drawcenteredtext(str, 224, letters_gold, NO_UPDATE, 1);
sprintf(str, "TUX x %d", lives);
- drawcenteredtext(str, 256, letters_blue, NO_UPDATE);
+ drawcenteredtext(str, 256, letters_blue, NO_UPDATE, 1);
SDL_Flip(screen);
level_song = load_song(song_path);
free(song_path);
-
+
song_path = (char *) malloc(sizeof(char) * (strlen(DATA_PREFIX) +
strlen(song_title) + 8 + 5));
song_subtitle = strdup(song_title);
USE_ALPHA);
firetux_right[0] = load_image(DATA_PREFIX "/images/shared/firetux-right-0.png",
- USE_ALPHA);
+ USE_ALPHA);
firetux_right[1] = load_image(DATA_PREFIX "/images/shared/firetux-right-1.png",
- USE_ALPHA);
+ USE_ALPHA);
firetux_right[2] = load_image(DATA_PREFIX "/images/shared/firetux-right-2.png",
- USE_ALPHA);
+ USE_ALPHA);
firetux_left[0] = load_image(DATA_PREFIX "/images/shared/firetux-left-0.png",
- USE_ALPHA);
+ USE_ALPHA);
firetux_left[1] = load_image(DATA_PREFIX "/images/shared/firetux-left-1.png",
- USE_ALPHA);
+ USE_ALPHA);
firetux_left[2] = load_image(DATA_PREFIX "/images/shared/firetux-left-2.png",
- USE_ALPHA);
+ USE_ALPHA);
cape_right[0] = load_image(DATA_PREFIX "/images/shared/cape-right-0.png",
USE_ALPHA);
USE_ALPHA);
bigfiretux_right[0] = load_image(DATA_PREFIX "/images/shared/bigfiretux-right-0.png",
- USE_ALPHA);
+ USE_ALPHA);
bigfiretux_right[1] = load_image(DATA_PREFIX "/images/shared/bigfiretux-right-1.png",
- USE_ALPHA);
+ USE_ALPHA);
bigfiretux_right[2] = load_image(DATA_PREFIX "/images/shared/bigfiretux-right-2.png",
- USE_ALPHA);
+ USE_ALPHA);
bigfiretux_right_jump =
load_image(DATA_PREFIX "/images/shared/bigfiretux-right-jump.png", USE_ALPHA);
bigfiretux_left[0] = load_image(DATA_PREFIX "/images/shared/bigfiretux-left-0.png",
- USE_ALPHA);
+ USE_ALPHA);
bigfiretux_left[1] = load_image(DATA_PREFIX "/images/shared/bigfiretux-left-1.png",
- USE_ALPHA);
+ USE_ALPHA);
bigfiretux_left[2] = load_image(DATA_PREFIX "/images/shared/bigfiretux-left-2.png",
- USE_ALPHA);
+ USE_ALPHA);
bigfiretux_left_jump =
load_image(DATA_PREFIX "/images/shared/bigfiretux-left-jump.png", USE_ALPHA);
USE_ALPHA);
duckfiretux_right = load_image(DATA_PREFIX
- "/images/shared/duckfiretux-right.png",
- USE_ALPHA);
+ "/images/shared/duckfiretux-right.png",
+ USE_ALPHA);
duckfiretux_left = load_image(DATA_PREFIX
- "/images/shared/duckfiretux-left.png",
- USE_ALPHA);
+ "/images/shared/duckfiretux-left.png",
+ USE_ALPHA);
skidfiretux_right = load_image(DATA_PREFIX
- "/images/shared/skidfiretux-right.png",
- USE_ALPHA);
+ "/images/shared/skidfiretux-right.png",
+ USE_ALPHA);
skidfiretux_left = load_image(DATA_PREFIX
- "/images/shared/skidfiretux-left.png",
- USE_ALPHA);
+ "/images/shared/skidfiretux-left.png",
+ USE_ALPHA);
/* Boxes: */
img_red_glow = load_image(DATA_PREFIX "/images/shared/red-glow.png",
USE_ALPHA);
-
-
+
+
/* Distros: */
img_distro[3] = load_image(DATA_PREFIX "/images/shared/distro-3.png",
USE_ALPHA);
-
+
/* Tux life: */
tux_life = load_image(DATA_PREFIX "/images/shared/tux-life.png",
clearscreen(0, 0, 0);
- drawcenteredtext("GAMEOVER", 200, letters_red, NO_UPDATE);
+ drawcenteredtext("GAMEOVER", 200, letters_red, NO_UPDATE, 1);
sprintf(str, "SCORE: %d", score);
- drawcenteredtext(str, 224, letters_gold, NO_UPDATE);
+ drawcenteredtext(str, 224, letters_gold, NO_UPDATE, 1);
sprintf(str, "DISTROS: %d", distros);
- drawcenteredtext(str, 256, letters_blue, NO_UPDATE);
+ drawcenteredtext(str, 256, letters_blue, NO_UPDATE, 1);
SDL_Flip(screen);
SDL_Delay(2000);
clearscreen(0, 0, 0);
- drawcenteredtext("Result:", 200, letters_red, NO_UPDATE);
+ drawcenteredtext("Result:", 200, letters_red, NO_UPDATE, 1);
sprintf(str, "SCORE: %d", score);
- drawcenteredtext(str, 224, letters_gold, NO_UPDATE);
+ drawcenteredtext(str, 224, letters_gold, NO_UPDATE, 1);
sprintf(str, "DISTROS: %d", distros);
- drawcenteredtext(str, 256, letters_blue, NO_UPDATE);
+ drawcenteredtext(str, 256, letters_blue, NO_UPDATE, 1);
SDL_Flip(screen);
/*SDL_Delay(2000);*/