home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / games / volume13 / jetpack / part04 / special.c < prev    next >
C/C++ Source or Header  |  1992-04-10  |  2KB  |  83 lines

  1. /*    special.c : routines that read in the predefined levels from files.
  2. */
  3.  
  4. #include "copyright.h"
  5. #include "defs.h"
  6.  
  7. #ifndef    LEVELPATH
  8. #define    LEVELPATH    "jetpack.lev"
  9. #endif
  10.  
  11. /*    special_setup checks to see if the current level has a level file, and
  12.     if so, to read in the level from the level file
  13. */
  14. int    special_setup()
  15. {
  16.     register int    i, j;
  17.     char            filename[MAXPATHLEN];
  18.     FILE            *fp;
  19.     int                gx, gy, gd, gs, fx, fy, fdx, fdy, sx, sy, sf, sd, ss,
  20.                     px, py, kx, ky, length, ng, nf, ns, np, playerx,
  21.                     playery;
  22.  
  23.     sprintf(filename, "%s%03d", LEVELPATH, level);
  24.     fp = fopen(filename, "r");
  25.     if(fp == NULL) return(0);
  26.     rewind(fp);
  27.     fflush(fp);
  28.     mazelcount = 0;
  29.     fscanf(fp, " %d %d %d ", &mazewidth, &mazeheight, &mazescale);
  30.     for(i=0; i<mazeheight+2; i++) {
  31.         for(j=0; j<mazewidth+2; j++) {
  32.             fscanf(fp, "%d", &(maze[j][i]));
  33.         }
  34.     }
  35.     convert_maze(mazewidth, mazeheight);
  36.     fscanf(fp, " %d %d %d ", &playerx, &playery, &bonus);
  37.     place_player(playerx, playery);
  38.     fscanf(fp, " %d ", &ng);
  39.     for(i=0; i<ng; i++) {
  40.         fscanf(fp, " %d %d %d %d ", &gx, &gy, &gd, &gs);
  41.         place_guard(gx, gy, gd, gs);
  42.     }
  43.     fscanf(fp, " %d ", &nf);
  44.     for(i=0; i<nf; i++) {
  45.         fscanf(fp, " %d %d %d %d ", &fx, &fy, &fdx, &fdy);
  46.         place_fireball(fx, fy, fdx, fdy);
  47.     }
  48.     fscanf(fp, " %d ", &ns);
  49.     for(i=0; i<ns; i++) {
  50.         fscanf(fp, " %d %d %d %d %d ", &sx, &sy, &sf, &sd, &ss);
  51.         place_sweeper(sx, sy, sf, sd, ss);
  52.     }
  53.     fscanf(fp, " %d ", &np);
  54.     for(i=0; i<np; i++) {
  55.         fscanf(fp, " %d %d ", &px, &py);
  56.         place_fuel(px, py);
  57.     }
  58.     fscanf(fp, " %d %d ", &kx, &ky);
  59.     place_key(kx, ky);
  60.     fscanf(fp, " %d ", &numlmessage);
  61.     for(i=0; i<numlmessage; i++) {
  62.         fscanf(fp, " %d %d %d %d %d %d %d %d ", &(lmessage[i].x1),
  63.                 &(lmessage[i].y1), &(lmessage[i].x2), &(lmessage[i].y2),
  64.                 &(lmessage[i].color), &(lmessage[i].bigcolor),
  65.                 &(lmessage[i].time), &(lmessage[i].bigtime));
  66.         fscanf(fp, " %d ", &length);
  67.         for(j=0; j<length; j++) {
  68.             fscanf(fp, "%c", lmessage[i].bigtext+j);
  69.         }
  70.         lmessage[i].bigtext[length] = '\0';
  71.         lmessage[i].bigactive = (length != 0);
  72.         fscanf(fp, " %d ", &length);
  73.         for(j=0; j<length; j++) {
  74.             fscanf(fp, "%c", lmessage[i].text+j);
  75.         }
  76.         lmessage[i].text[length] = '\0';
  77.         lmessage[i].active = (length != 0);
  78.         lmessage[i].unused = 1;
  79.     }
  80.     initbonus = bonus;
  81.     return(1);
  82. }
  83.