- texture_load(&bigfiretux_right[1], datadir + "/images/shared/bigfiretux-right-1.png",
- USE_ALPHA);
-
- texture_load(&bigfiretux_right[2], datadir + "/images/shared/bigfiretux-right-2.png",
- USE_ALPHA);
-
- texture_load(&bigfiretux_right_jump, datadir + "/images/shared/bigfiretux-right-jump.png", USE_ALPHA);
-
- texture_load(&bigfiretux_left[0], datadir + "/images/shared/bigfiretux-left-0.png",
- USE_ALPHA);
-
- texture_load(&bigfiretux_left[1], datadir + "/images/shared/bigfiretux-left-1.png",
- USE_ALPHA);
-
- texture_load(&bigfiretux_left[2], datadir + "/images/shared/bigfiretux-left-2.png",
- USE_ALPHA);
-
- texture_load(&bigfiretux_left_jump, datadir + "/images/shared/bigfiretux-left-jump.png", USE_ALPHA);
-
- texture_load(&bigcape_right[0], datadir + "/images/shared/bigcape-right-0.png",
- USE_ALPHA);
-
- texture_load(&bigcape_right[1], datadir + "/images/shared/bigcape-right-1.png",
- USE_ALPHA);
-
- texture_load(&bigcape_left[0], datadir + "/images/shared/bigcape-left-0.png",
- USE_ALPHA);
-
- texture_load(&bigcape_left[1], datadir + "/images/shared/bigcape-left-1.png",
- USE_ALPHA);
-
-
- texture_load(&ducktux_right, datadir +
- "/images/shared/ducktux-right.png",
- USE_ALPHA);
-
- texture_load(&ducktux_left, datadir +
- "/images/shared/ducktux-left.png",
- USE_ALPHA);
-
- texture_load(&skidtux_right, datadir +
- "/images/shared/skidtux-right.png",
- USE_ALPHA);
-
- texture_load(&skidtux_left, datadir +
- "/images/shared/skidtux-left.png",
- USE_ALPHA);
-
- texture_load(&duckfiretux_right, datadir +
- "/images/shared/duckfiretux-right.png",
- USE_ALPHA);
-
- texture_load(&duckfiretux_left, datadir +
- "/images/shared/duckfiretux-left.png",
- USE_ALPHA);
-
- texture_load(&skidfiretux_right, datadir +
- "/images/shared/skidfiretux-right.png",
- USE_ALPHA);
-
- texture_load(&skidfiretux_left, datadir +
- "/images/shared/skidfiretux-left.png",
- USE_ALPHA);
-
-
- /* Boxes: */
-
- texture_load(&img_box_full, datadir + "/images/shared/box-full.png",
- IGNORE_ALPHA);
- texture_load(&img_box_empty, datadir + "/images/shared/box-empty.png",
- IGNORE_ALPHA);
-
-
- /* Water: */
-
-
- texture_load(&img_water, datadir + "/images/shared/water.png", IGNORE_ALPHA);
-
- texture_load(&img_waves[0], datadir + "/images/shared/waves-0.png",
- USE_ALPHA);
-
- texture_load(&img_waves[1], datadir + "/images/shared/waves-1.png",
- USE_ALPHA);
-
- texture_load(&img_waves[2], datadir + "/images/shared/waves-2.png",
- USE_ALPHA);
-
-
- /* Pole: */
-
- texture_load(&img_pole, datadir + "/images/shared/pole.png", USE_ALPHA);
- texture_load(&img_poletop, datadir + "/images/shared/poletop.png",
- USE_ALPHA);
-
-
- /* Flag: */
-
- texture_load(&img_flag[0], datadir + "/images/shared/flag-0.png",
- USE_ALPHA);
- texture_load(&img_flag[1], datadir + "/images/shared/flag-1.png",
- USE_ALPHA);
-
-
- /* Cloud: */
-
- texture_load(&img_cloud[0][0], datadir + "/images/shared/cloud-00.png",
- USE_ALPHA);
-
- texture_load(&img_cloud[0][1], datadir + "/images/shared/cloud-01.png",
- USE_ALPHA);
-
- texture_load(&img_cloud[0][2], datadir + "/images/shared/cloud-02.png",
- USE_ALPHA);
-
- texture_load(&img_cloud[0][3], datadir + "/images/shared/cloud-03.png",
- USE_ALPHA);
-
-
- texture_load(&img_cloud[1][0], datadir + "/images/shared/cloud-10.png",
- USE_ALPHA);
-
- texture_load(&img_cloud[1][1], datadir + "/images/shared/cloud-11.png",
- USE_ALPHA);
-
- texture_load(&img_cloud[1][2], datadir + "/images/shared/cloud-12.png",
- USE_ALPHA);
-
- texture_load(&img_cloud[1][3], datadir + "/images/shared/cloud-13.png",
- USE_ALPHA);
-
-
- /* Bad guys: */
-
- /* (BSOD) */
-
- texture_load(&img_bsod_left[0], datadir +
- "/images/shared/bsod-left-0.png",
- USE_ALPHA);
-
- texture_load(&img_bsod_left[1], datadir +
- "/images/shared/bsod-left-1.png",
- USE_ALPHA);
-
- texture_load(&img_bsod_left[2], datadir +
- "/images/shared/bsod-left-2.png",
- USE_ALPHA);
-
- texture_load(&img_bsod_left[3], datadir +
- "/images/shared/bsod-left-3.png",
- USE_ALPHA);
-
- texture_load(&img_bsod_right[0], datadir +
- "/images/shared/bsod-right-0.png",
- USE_ALPHA);
-
- texture_load(&img_bsod_right[1], datadir +
- "/images/shared/bsod-right-1.png",
- USE_ALPHA);
-
- texture_load(&img_bsod_right[2], datadir +
- "/images/shared/bsod-right-2.png",
- USE_ALPHA);
-
- texture_load(&img_bsod_right[3], datadir +
- "/images/shared/bsod-right-3.png",
- USE_ALPHA);
-
- texture_load(&img_bsod_squished_left, datadir +
- "/images/shared/bsod-squished-left.png",
- USE_ALPHA);
-
- texture_load(&img_bsod_squished_right, datadir +
- "/images/shared/bsod-squished-right.png",
- USE_ALPHA);
-
- texture_load(&img_bsod_falling_left, datadir +
- "/images/shared/bsod-falling-left.png",
- USE_ALPHA);
-
- texture_load(&img_bsod_falling_right, datadir +
- "/images/shared/bsod-falling-right.png",
- USE_ALPHA);
-
-
- /* (Laptop) */
-
- texture_load(&img_laptop_left[0], datadir +
- "/images/shared/laptop-left-0.png",
- USE_ALPHA);
-
- texture_load(&img_laptop_left[1], datadir +
- "/images/shared/laptop-left-1.png",
- USE_ALPHA);
-
- texture_load(&img_laptop_left[2], datadir +
- "/images/shared/laptop-left-2.png",
- USE_ALPHA);
-
- texture_load(&img_laptop_right[0], datadir +
- "/images/shared/laptop-right-0.png",
- USE_ALPHA);
-
- texture_load(&img_laptop_right[1], datadir +
- "/images/shared/laptop-right-1.png",
- USE_ALPHA);
-
- texture_load(&img_laptop_right[2], datadir +
- "/images/shared/laptop-right-2.png",
- USE_ALPHA);
-
- texture_load(&img_laptop_flat_left, datadir +
- "/images/shared/laptop-flat-left.png",
- USE_ALPHA);
-
- texture_load(&img_laptop_flat_right, datadir +
- "/images/shared/laptop-flat-right.png",
- USE_ALPHA);
-
- texture_load(&img_laptop_falling_left, datadir +
- "/images/shared/laptop-falling-left.png",
- USE_ALPHA);
-
- texture_load(&img_laptop_falling_right, datadir +
- "/images/shared/laptop-falling-right.png",
- USE_ALPHA);
-
-
- /* (Money) */
-
- texture_load(&img_money_left[0], datadir +
- "/images/shared/bag-left-0.png",
- USE_ALPHA);
-
- texture_load(&img_money_left[1], datadir +
- "/images/shared/bag-left-1.png",
- USE_ALPHA);
-
- texture_load(&img_money_right[0], datadir +
- "/images/shared/bag-right-0.png",
- USE_ALPHA);
-
- texture_load(&img_money_right[1], datadir +
- "/images/shared/bag-right-1.png",
- USE_ALPHA);
-
-
-
- /* Upgrades: */
-
- texture_load(&img_mints, datadir + "/images/shared/mints.png", USE_ALPHA);
- texture_load(&img_coffee, datadir + "/images/shared/coffee.png", USE_ALPHA);
-
-
- /* Weapons: */
-
- texture_load(&img_bullet, datadir + "/images/shared/bullet.png", USE_ALPHA);
-
- texture_load(&img_red_glow, datadir + "/images/shared/red-glow.png",
- USE_ALPHA);
-
-
-
- /* Distros: */
-
- texture_load(&img_distro[0], datadir + "/images/shared/distro-0.png",
- USE_ALPHA);
-
- texture_load(&img_distro[1], datadir + "/images/shared/distro-1.png",
- USE_ALPHA);
-
- texture_load(&img_distro[2], datadir + "/images/shared/distro-2.png",
- USE_ALPHA);
-
- texture_load(&img_distro[3], datadir + "/images/shared/distro-3.png",
- USE_ALPHA);
-
-
- /* Tux life: */
-
- texture_load(&tux_life, datadir + "/images/shared/tux-life.png",
- USE_ALPHA);
-
- /* Herring: */
-
- texture_load(&img_golden_herring, datadir + "/images/shared/golden-herring.png",
- USE_ALPHA);
-
-
- /* Super background: */
-
- texture_load(&img_super_bkgd, datadir + "/images/shared/super-bkgd.png",
- IGNORE_ALPHA);
-
-
- /* Sound effects: */
-
- /* if (use_sound) // this will introduce SERIOUS bugs here ! because "load_sound"
- // initialize sounds[i] with the correct pointer's value:
- // NULL or something else. And it will be dangerous to
- // play with not-initialized pointers.
- // This is also true with if (use_music)
- Send a mail to me: neoneurone@users.sf.net, if you have another opinion. :)
- */
- for (i = 0; i < NUM_SOUNDS; i++)
- sounds[i] = load_sound(datadir + soundfilenames[i]);
-
- /* Herring song */
- herring_song = load_song(datadir + "/music/SALCON.MOD");
-}
-
-
-/* Free shared data: */
-
-void unloadshared(void)
-{
- int i;
-
- for (i = 0; i < 3; i++)
- {
- texture_free(&tux_right[i]);
- texture_free(&tux_left[i]);
- texture_free(&bigtux_right[i]);
- texture_free(&bigtux_left[i]);
- }
-
- texture_free(&bigtux_right_jump);
- texture_free(&bigtux_left_jump);
-
- for (i = 0; i < 2; i++)
- {
- texture_free(&cape_right[i]);
- texture_free(&cape_left[i]);
- texture_free(&bigcape_right[i]);
- texture_free(&bigcape_left[i]);
- }
-
- texture_free(&ducktux_left);
- texture_free(&ducktux_right);
-
- texture_free(&skidtux_left);
- texture_free(&skidtux_right);
-
- for (i = 0; i < 4; i++)
- {
- texture_free(&img_bsod_left[i]);
- texture_free(&img_bsod_right[i]);
- }
-
- texture_free(&img_bsod_squished_left);
- texture_free(&img_bsod_squished_right);
-
- texture_free(&img_bsod_falling_left);
- texture_free(&img_bsod_falling_right);
-
- for (i = 0; i < 3; i++)
- {
- texture_free(&img_laptop_left[i]);
- texture_free(&img_laptop_right[i]);
- }
-
- texture_free(&img_laptop_flat_left);
- texture_free(&img_laptop_flat_right);
-
- texture_free(&img_laptop_falling_left);
- texture_free(&img_laptop_falling_right);
-
- for (i = 0; i < 2; i++)
- {
- texture_free(&img_money_left[i]);
- texture_free(&img_money_right[i]);
- }
-
- texture_free(&img_box_full);
- texture_free(&img_box_empty);
-
- texture_free(&img_water);
- for (i = 0; i < 3; i++)
- texture_free(&img_waves[i]);
-
- texture_free(&img_pole);
- texture_free(&img_poletop);
-
- for (i = 0; i < 2; i++)
- texture_free(&img_flag[i]);
-
- texture_free(&img_mints);
- texture_free(&img_coffee);
-
- for (i = 0; i < 4; i++)
- {
- texture_free(&img_distro[i]);
- texture_free(&img_cloud[0][i]);
- texture_free(&img_cloud[1][i]);
- }
-
- texture_free(&img_golden_herring);
-
- for (i = 0; i < NUM_SOUNDS; i++)
- free_chunk(sounds[i]);
-
- /* free the herring song */
- free_music( herring_song );
-}
-
-
-/* Draw a tile on the screen: */
-
-void drawshape(float x, float y, unsigned char c)
-{
- int z;
-
- if (c == 'X' || c == 'x')
- texture_draw(&img_brick[0], x, y);
- else if (c == 'Y' || c == 'y')
- texture_draw(&img_brick[1], x, y);
- else if (c == 'A' || c =='B' || c == '!')
- texture_draw(&img_box_full, x, y);
- else if (c == 'a')
- texture_draw(&img_box_empty, x, y);
- else if (c >= 'C' && c <= 'F')
- texture_draw(&img_cloud[0][c - 'C'], x, y);
- else if (c >= 'c' && c <= 'f')
- texture_draw(&img_cloud[1][c - 'c'], x, y);
- else if (c >= 'G' && c <= 'J')
- texture_draw(&img_bkgd_tile[0][c - 'G'], x, y);
- else if (c >= 'g' && c <= 'j')
- texture_draw(&img_bkgd_tile[1][c - 'g'], x, y);
- else if (c == '#')
- texture_draw(&img_solid[0], x, y);
- else if (c == '[')
- texture_draw(&img_solid[1], x, y);
- else if (c == '=')
- texture_draw(&img_solid[2], x, y);
- else if (c == ']')
- texture_draw(&img_solid[3], x, y);
- else if (c == '$')
- {
- z = (global_frame_counter / 2) % 6;
-
- if (z < 4)
- texture_draw(&img_distro[z], x, y);
- else if (z == 4)
- texture_draw(&img_distro[2], x, y);
- else if (z == 5)
- texture_draw(&img_distro[1], x, y);
- }
- else if (c == '^')
- {
- z = (global_frame_counter / 3) % 3;
-
- texture_draw(&img_waves[z], x, y);
- }
- else if (c == '*')
- texture_draw(&img_poletop, x, y);
- else if (c == '|')
- {
- texture_draw(&img_pole, x, y);
-
- }
- else if (c == '\\')
- {
- z = (global_frame_counter / 3) % 2;
-
- texture_draw(&img_flag[z], x + 16, y);
- }
- else if (c == '&')
- texture_draw(&img_water, x, y);
-}
-
-
-/* What shape is at some position? */
-
-unsigned char shape(float x, float y)
-{
-
- int xx, yy;
- unsigned char c;
-
- yy = ((int)y / 32);
- xx = ((int)x / 32);
-
- if (yy >= 0 && yy < 15 && xx >= 0 && xx <= current_level.width)
- {
- c = current_level.tiles[yy][xx];
- }
- else
- c = '.';
-
- return(c);
-}
-
-/* Is is ground? */
-
-
-bool issolid(float x, float y)
-{
- return (isbrick(x, y) ||
- isice(x, y) ||
- (shape(x, y) == '[') ||
- (shape(x, y) == '=') ||
- (shape(x, y) == ']') ||
- (shape(x, y) == 'A') ||
- (shape(x, y) == 'B') ||
- (shape(x, y) == '!') ||
- (shape(x, y) == 'a'));
-}
-
-/* Is it a brick? */
-
-bool isbrick(float x, float y)
-{
- return (shape(x, y) == 'X' ||
- shape(x, y) == 'x' ||
- shape(x, y) == 'Y' ||
- shape(x, y) == 'y');
-}
-
-
-/* Is it ice? */
-
-bool isice(float x, float y)
-{
- return (shape(x, y) == '#');
-}
-
-/* Is it a full box? */
-
-bool isfullbox(float x, float y)
-{
- return (shape(x, y) == 'A' ||
- shape(x, y) == 'B' ||
- shape(x, y) == '!');
-}
-
-/* Break a brick: */
-
-void trybreakbrick(float x, float y)
-{
- if (isbrick(x, y))
- {
- if (shape(x, y) == 'x' || shape(x, y) == 'y')
- {
- /* Get a distro from it: */
-
- add_bouncy_distro(((int)(x + 1) / 32) * 32,
- (int)(y / 32) * 32);
-
- if (!counting_distros)
- {
- counting_distros = true;
- distro_counter = 50;
- }
-
- if (distro_counter <= 0)
- level_change(¤t_level,x, y, 'a');
-
- play_sound(sounds[SND_DISTRO], SOUND_CENTER_SPEAKER);
- score = score + SCORE_DISTRO;
- distros++;
- }
- else
- {
- /* Get rid of it: */
-
- level_change(¤t_level,x, y,'.');
- }
-
-
- /* Replace it with broken bits: */
-
- add_broken_brick(((int)(x + 1) / 32) * 32,
- (int)(y / 32) * 32);
-
-
- /* Get some score: */
-
- play_sound(sounds[SND_BRICK], SOUND_CENTER_SPEAKER);
- score = score + SCORE_BRICK;
- }
-}
-
-
-/* Bounce a brick: */
-
-void bumpbrick(float x, float y)
-{
- add_bouncy_brick(((int)(x + 1) / 32) * 32,
- (int)(y / 32) * 32);
-
- play_sound(sounds[SND_BRICK], SOUND_CENTER_SPEAKER);
-
-}
-
-
-/* Empty a box: */
-
-void tryemptybox(float x, float y, int col_side)
-{
- if (!isfullbox(x, y))
- return;
-
- // according to the collision side, set the upgrade direction
-
- if(col_side == LEFT)
- col_side = RIGHT;
- else
- col_side = LEFT;
-
- switch(shape(x,y))
- {
- case 'A': /* Box with a distro! */
- add_bouncy_distro(((int)(x + 1) / 32) * 32, (int)(y / 32) * 32 - 32);
- play_sound(sounds[SND_DISTRO], SOUND_CENTER_SPEAKER);
- score = score + SCORE_DISTRO;
- distros++;
- break;
- case 'B': /* Add an upgrade! */
- if (tux.size == SMALL) /* Tux is small, add mints! */
- add_upgrade((int)((x + 1) / 32) * 32, (int)(y / 32) * 32 - 32, col_side, UPGRADE_MINTS);
- else /* Tux is big, add coffee: */
- add_upgrade((int)((x + 1) / 32) * 32, (int)(y / 32) * 32 - 32, col_side, UPGRADE_COFFEE);
- play_sound(sounds[SND_UPGRADE], SOUND_CENTER_SPEAKER);
- break;
- case '!': /* Add a golden herring */
- add_upgrade((int)((x + 1) / 32) * 32, (int)(y / 32) * 32 - 32, col_side, UPGRADE_HERRING);
- break;
- default:
- break;
- }
-
- /* Empty the box: */
- level_change(¤t_level,x, y, 'a');
-}
-
-
-/* Try to grab a distro: */
-
-void trygrabdistro(float x, float y, int bounciness)
-{
- if (shape(x, y) == '$')
- {
- level_change(¤t_level,x, y, '.');
- play_sound(sounds[SND_DISTRO], SOUND_CENTER_SPEAKER);
-
- if (bounciness == BOUNCE)
- {
- add_bouncy_distro(((int)(x + 1) / 32) * 32,
- (int)(y / 32) * 32);
- }
-
- score = score + SCORE_DISTRO;
- distros++;
- }
-}
-
-/* Try to bump a bad guy from below: */
-
-void trybumpbadguy(float x, float y)
-{
- unsigned int i;
-
- /* Bad guys: */
- for (i = 0; i < bad_guys.size(); i++)
- {
- if (bad_guys[i].base.x >= x - 32 && bad_guys[i].base.x <= x + 32 &&
- bad_guys[i].base.y >= y - 16 && bad_guys[i].base.y <= y + 16)
- {
- if (bad_guys[i].kind == BAD_BSOD ||
- bad_guys[i].kind == BAD_LAPTOP)
- {
- bad_guys[i].dying = DYING_FALLING;
- bad_guys[i].base.ym = -8;
- play_sound(sounds[SND_FALL], SOUND_CENTER_SPEAKER);
- }
- }
- }
-
-
- /* Upgrades: */
- for (i = 0; i < upgrades.size(); i++)
- {
- if (upgrades[i].base.height == 32 &&
- upgrades[i].base.x >= x - 32 && upgrades[i].base.x <= x + 32 &&
- upgrades[i].base.y >= y - 16 && upgrades[i].base.y <= y + 16)
- {
- upgrades[i].base.xm = -upgrades[i].base.xm;
- upgrades[i].base.ym = -8;
- play_sound(sounds[SND_BUMP_UPGRADE], SOUND_CENTER_SPEAKER);
- }
- }
-}
-
-/* (Status): */
-void drawstatus(void)
-{
- char str[60];
-
- sprintf(str, "%d", score);
- text_draw(&white_text, "SCORE", 0, 0, 1);
- text_draw(&gold_text, str, 96, 0, 1);
-
- if(st_gl_mode != ST_GL_TEST)
- {
- sprintf(str, "%d", hs_score);
- text_draw(&white_text, "HIGH", 0, 20, 1);
- text_draw(&gold_text, str, 96, 20, 1);
- }
- else
- {
- text_draw(&white_text,"Press ESC To Return",0,20,1);
- }
-
- if (timer_get_left(&time_left) > TIME_WARNING || (global_frame_counter % 10) < 5)
- {
- sprintf(str, "%d", timer_get_left(&time_left) / 1000 );
- text_draw(&white_text, "TIME", 224, 0, 1);
- text_draw(&gold_text, str, 304, 0, 1);
- }
-
- sprintf(str, "%d", distros);
- text_draw(&white_text, "DISTROS", screen->h, 0, 1);
- text_draw(&gold_text, str, 608, 0, 1);
-
- text_draw(&white_text, "LIVES", screen->h, 20, 1);
-
- if(show_fps)
- {
- sprintf(str, "%2.1f", fps_fps);
- text_draw(&white_text, "FPS", screen->h, 40, 1);
- text_draw(&gold_text, str, screen->h + 60, 40, 1);
- }
-
- for(int i=0; i < tux.lives; ++i)
- {
- texture_draw(&tux_life,565+(18*i),20);
- }
-}
-
-
-void drawendscreen(void)
-{
- char str[80];
-
- clearscreen(0, 0, 0);
-
- text_drawf(&blue_text, "GAMEOVER", 0, 200, A_HMIDDLE, A_TOP, 1);
-
- sprintf(str, "SCORE: %d", score);
- text_drawf(&gold_text, str, 0, 224, A_HMIDDLE, A_TOP, 1);
-
- sprintf(str, "DISTROS: %d", distros);
- text_drawf(&gold_text, str, 0, 256, A_HMIDDLE, A_TOP, 1);
-
- flipscreen();
- SDL_Delay(2000);
-}
-
-void drawresultscreen(void)
-{
- char str[80];
-
- clearscreen(0, 0, 0);
-
- text_drawf(&blue_text, "Result:", 0, 200, A_HMIDDLE, A_TOP, 1);
-
- sprintf(str, "SCORE: %d", score);
- text_drawf(&gold_text, str, 0, 224, A_HMIDDLE, A_TOP, 1);
-
- sprintf(str, "DISTROS: %d", distros);
- text_drawf(&gold_text, str, 0, 256, A_HMIDDLE, A_TOP, 1);
-
- flipscreen();
- SDL_Delay(2000);
-}
-
-void savegame(int slot)
-{
- char savefile[1024];
- FILE* fi;
- unsigned int ui;
-
- sprintf(savefile,"%s/slot%d.save",st_save_dir,slot);
-
- fi = fopen(savefile, "wb");
-
- if (fi == NULL)
- {
- fprintf(stderr, "Warning: I could not open the slot file ");
-
- }
- else
- {
- fputs(level_subset, fi);
- fputs("\n", fi);
- fwrite(&level,sizeof(int),1,fi);
- fwrite(&score,sizeof(int),1,fi);
- fwrite(&distros,sizeof(int),1,fi);
- fwrite(&scroll_x,sizeof(float),1,fi);
- fwrite(&tux,sizeof(Player),1,fi);
- timer_fwrite(&tux.invincible_timer,fi);
- timer_fwrite(&tux.skidding_timer,fi);
- timer_fwrite(&tux.safe_timer,fi);
- timer_fwrite(&tux.frame_timer,fi);
- timer_fwrite(&time_left,fi);
- ui = st_get_ticks();
- fwrite(&ui,sizeof(int),1,fi);
- }
- fclose(fi);
-
-}
-
-void loadgame(int slot)
-{
- char savefile[1024];
- char str[100];
- FILE* fi;
- unsigned int ui;
-
- sprintf(savefile,"%s/slot%d.save",st_save_dir,slot);
-
- fi = fopen(savefile, "rb");
-
- if (fi == NULL)
- {
- fprintf(stderr, "Warning: I could not open the slot file ");
-
- }
- else
- {
- fgets(str, 100, fi);
- strcpy(level_subset, str);
- level_subset[strlen(level_subset)-1] = '\0';
- fread(&level,sizeof(int),1,fi);
-
- set_defaults();
- level_free(¤t_level);
- if(level_load(¤t_level,level_subset,level) != 0)
- exit(1);
- arrays_free();
- arrays_init();
- activate_bad_guys();
- level_free_gfx();
- level_load_gfx(¤t_level);
- level_free_song();
- level_load_song(¤t_level);
- levelintro();
- update_time = st_get_ticks();
-
- fread(&score,sizeof(int),1,fi);
- fread(&distros,sizeof(int),1,fi);
- fread(&scroll_x,sizeof(float),1,fi);
- fread(&tux, sizeof(Player), 1, fi);
- timer_fread(&tux.invincible_timer,fi);
- timer_fread(&tux.skidding_timer,fi);
- timer_fread(&tux.safe_timer,fi);
- timer_fread(&tux.frame_timer,fi);
- timer_fread(&time_left,fi);
- fread(&ui,sizeof(int),1,fi);
- tux.hphysic.start_time += st_get_ticks() - ui;
- tux.vphysic.start_time += st_get_ticks() - ui;
- fclose(fi);
- }
-
-}
-
-void slotinfo(char **pinfo, int slot)
-{
- FILE* fi;
- char slotfile[1024];
- char tmp[200];
- char str[5];
- int slot_level;
- sprintf(slotfile,"%s/slot%d.save",st_save_dir,slot);
-
- fi = fopen(slotfile, "rb");
-
- sprintf(tmp,"Slot %d - ",slot);
-
- if (fi == NULL)
- {
- strcat(tmp,"Free");
- }
- else
- {
- fgets(str, 100, fi);
- str[strlen(str)-1] = '\0';
- strcat(tmp, str);
- strcat(tmp, " / Level:");
- fread(&slot_level,sizeof(int),1,fi);
- sprintf(str,"%d",slot_level);
- strcat(tmp,str);
- fclose(fi);
- }
-
- *pinfo = (char*) malloc(sizeof(char) * (strlen(tmp)+1));
- strcpy(*pinfo,tmp);
-}