home *** CD-ROM | disk | FTP | other *** search
/ CD PowerPlay 6 / TheCompleteAdventureCollection1995 / CDPP6.ISO / utility / agtsrc / final.pa3 < prev    next >
Encoding:
Text File  |  1989-11-19  |  6.5 KB  |  186 lines

  1.  
  2.   {FINAL.PA2}
  3.  
  4.   {Write Final Version of Game}
  5.   PROCEDURE WriteFinalVersion;
  6.   VAR
  7.     i : Integer;
  8.     FreeBytes, EstimatedSize : Real;
  9.     st : words;
  10.     Write_Text_file : Text;
  11.     RoomFile : FILE OF rooms;
  12.     NounFile : FILE OF nouns;
  13.     CreatureFile : FILE OF creatures;
  14.     CommandFile : FILE OF Command;
  15.  
  16.     FUNCTION Free : Real;
  17.       {Returns free space on the default disk}
  18.     VAR
  19.       reg : Registers;
  20.  
  21.     BEGIN                         {Free}
  22.       WITH reg DO
  23.         BEGIN
  24.           ah := $36;              {DOS function number}
  25.           dl := $00;              {drive number: default=00;a=01,b=02,c=03,etc}
  26.           MSDOS(reg);             {call DOS}
  27.           Free := 1.0*ax*bx*cx;   {multiple by 1.0 to create a REAL value}
  28.         END;
  29.     END;                          {Free}
  30.  
  31.   BEGIN                           {WriteFinalVersion}
  32.     EstimatedSize := 11000.0+170.0*MaxRoom;
  33.     IF Last_CMD > 0 THEN EstimatedSize := EstimatedSize+140.0*Last_CMD;
  34.     IF MaxNoun >= First_noun THEN
  35.       EstimatedSize := EstimatedSize+279.0*(MaxNoun-First_noun+1.0);
  36.     IF MaxCreature >= First_creature THEN
  37.       EstimatedSize := EstimatedSize+380.0*(MaxCreature-First_creature+1.0);
  38.     EstimatedSize := (EstimatedSize+500.0)/1000.0;
  39.  
  40.     FreeBytes := (Free+500.0)/1000.0; {free space in K on default drive}
  41.     CLRSCR;
  42.     WriteLn('About to begin writing Final Version Data Files.');
  43.     WriteLn;
  44.     WriteLn('Data files require approximately ', EstimatedSize:5:0, ' K bytes of disk space.');
  45.     WriteLn('There are currently ', FreeBytes:5:0, ' K bytes free on your disk.');
  46.     WriteLn;
  47.     IF (EstimatedSize > (0.9*FreeBytes)) THEN
  48.       BEGIN
  49.         WriteLn('You may wish to put in a fresh disk with lots of room.');
  50.         WriteLn;
  51.       END;
  52.     Write('Hit RETURN when ready to proceed ');
  53.     ReadLn(st);
  54.     CLRSCR;
  55.     WriteLn('Final version of the game disk MUST contain following files:');
  56.     WriteLn;
  57.   {$IFDEF NormalVersion}
  58.     WriteLn(' RUN.EXE');
  59.   {$ELSE}
  60.     WriteLn(' RUNB.EXE  <-- The BIG version of RUN');
  61.   {$ENDIF}
  62.     Capitalize(Adventure_Name);
  63.     WriteLn(' ', Adventure_Name+'.BAT');
  64.     WriteLn(' ', Adventure_Name+'.D$$');
  65.     WriteLn(' ', Adventure_Name+'.DA1');
  66.  
  67.     {first write the text file with general data}
  68.     Assign(Write_Text_file, Adventure_Name+'.DA1');
  69.     Rewrite(Write_Text_file);
  70.     WriteLn(Write_Text_file, Starting_room);
  71.     WriteLn(Write_Text_file, Treasure_Room);
  72.     WriteLn(Write_Text_file, Resurrection_Room);
  73.     WriteLn(Write_Text_file, Max_Lives);
  74.     WriteLn(Write_Text_file, Maximum_Score);
  75.     WriteLn(Write_Text_file, MaxRoom);
  76.     WriteLn(Write_Text_file, MaxNoun);
  77.     WriteLn(Write_Text_file, MaxCreature);
  78.     WriteLn(Write_Text_file, Last_CMD);
  79.     WriteLn(Write_Text_file, Items_Being_Carried);
  80.     WriteLn(Write_Text_file, Items_Being_Worn);
  81.     WriteLn(Write_Text_file, Intro_Ptr.start);
  82.     WriteLn(Write_Text_file, Intro_Ptr.len);
  83.  
  84.     FOR i := 1 TO MaxQuestion DO
  85.       BEGIN
  86.         WriteLn(Write_Text_file, Question[i]);
  87.         WriteLn(Write_Text_file, Answer[i]);
  88.       END;
  89.  
  90.     IF Any_Special_Cmds
  91.     THEN
  92.       BEGIN
  93.         WriteLn(Write_Text_file, 'TRUE');
  94.         FOR i := 0 TO Last_Creature DO
  95.           BEGIN
  96.             WriteLn(Write_Text_file, StartingIndex[i]);
  97.             WriteLn(Write_Text_file, EndingIndex[i]);
  98.           END;
  99.       END                         {Any_Speical_Cmds}
  100.     ELSE WriteLn(Write_Text_file, 'FALSE');
  101.  
  102.     FOR i := 0 TO Num_Verbs DO WriteLn(Write_Text_file, SYN[i]); {verb synonyms}
  103.  
  104.     FOR i := First_Message TO Last_Message DO
  105.       BEGIN                       {write pointers to description file}
  106.         WriteLn(Write_Text_file, Message_Ptr[i].start);
  107.         WriteLn(Write_Text_file, Message_Ptr[i].len);
  108.       END;
  109.  
  110.     FOR i := First_Room TO MaxRoom DO
  111.       BEGIN
  112.         WriteLn(Write_Text_file, Room_Ptr[i].start);
  113.         WriteLn(Write_Text_file, Room_Ptr[i].len);
  114.         WriteLn(Write_Text_file, Help_Ptr[i].start);
  115.         WriteLn(Write_Text_file, Help_Ptr[i].len);
  116.         WriteLn(Write_Text_file, Special_Ptr[i].start);
  117.         WriteLn(Write_Text_file, Special_Ptr[i].len);
  118.       END;
  119.  
  120.     FOR i := First_noun TO MaxNoun DO
  121.       BEGIN
  122.         WriteLn(Write_Text_file, Noun_Ptr[i].start);
  123.         WriteLn(Write_Text_file, Noun_Ptr[i].len);
  124.         WriteLn(Write_Text_file, Push_Ptr[i].start);
  125.         WriteLn(Write_Text_file, Push_Ptr[i].len);
  126.         WriteLn(Write_Text_file, Pull_Ptr[i].start);
  127.         WriteLn(Write_Text_file, Pull_Ptr[i].len);
  128.         WriteLn(Write_Text_file, Text_Ptr[i].start);
  129.         WriteLn(Write_Text_file, Text_Ptr[i].len);
  130.         WriteLn(Write_Text_file, Turn_Ptr[i].start);
  131.         WriteLn(Write_Text_file, Turn_Ptr[i].len);
  132.         WriteLn(Write_Text_file, Play_Ptr[i].start);
  133.         WriteLn(Write_Text_file, Play_Ptr[i].len);
  134.       END;
  135.  
  136.     IF MaxCreature > 0 THEN FOR i := First_creature TO MaxCreature DO
  137.       BEGIN
  138.         WriteLn(Write_Text_file, Creature_Ptr[i].start);
  139.         WriteLn(Write_Text_file, Creature_Ptr[i].len);
  140.       END;
  141.  
  142.     Close(Write_Text_file);
  143.  
  144.     {next write the ROOM file}
  145.     WriteLn(' ', Adventure_Name+'.DA2');
  146.     Assign(RoomFile, Adventure_Name+'.DA2');
  147.     Rewrite(RoomFile);
  148.     FOR i := First_Room TO MaxRoom DO Write(RoomFile, Room[i]^);
  149.     Close(RoomFile);
  150.  
  151.     {next write the NOUN file}
  152.     WriteLn(' ', Adventure_Name+'.DA3');
  153.     Assign(NounFile, Adventure_Name+'.DA3');
  154.     Rewrite(NounFile);
  155.     FOR i := First_noun TO MaxNoun DO Write(NounFile, N[i]^);
  156.     Close(NounFile);
  157.  
  158.     {next write the CREATURE file}
  159.     IF MaxCreature > 0 THEN
  160.       BEGIN
  161.         WriteLn(' ', Adventure_Name+'.DA4');
  162.         Assign(CreatureFile, Adventure_Name+'.DA4');
  163.         Rewrite(CreatureFile);
  164.         FOR i := First_creature TO MaxCreature DO Write(CreatureFile, M[i]^);
  165.         Close(CreatureFile);
  166.       END;
  167.  
  168.     {next write the Special Command file -- if used}
  169.     IF Any_Special_Cmds THEN
  170.       BEGIN
  171.         WriteLn(' ', Adventure_Name+'.DA5');
  172.         Assign(CommandFile, Adventure_Name+'.DA5');
  173.         Rewrite(CommandFile);
  174.         FOR i := 1 TO Last_CMD DO Write(CommandFile, SpecialCMD[i]^);
  175.         Close(CommandFile);
  176.       END;
  177.  
  178.     WriteLn;
  179.     WriteLn('And optionally these files:');
  180.     WriteLn(' ', Adventure_Name+'.TTL -- a title file');
  181.     WriteLn(' ', Adventure_Name+'.INS -- an instruction file');
  182.     WriteLn;
  183.     Halt;
  184.   END;                            {WriteFinalVersion}
  185.  
  186.