home *** CD-ROM | disk | FTP | other *** search
/ Game Killer / Game_Killer.bin / 277.PART89.INC < prev    next >
Text File  |  1991-07-09  |  3KB  |  109 lines

  1. { part 8 and 9 }
  2.  
  3. procedure parseIReportLine( var f : text; var s : TheVoid );
  4. { parse one line of the sector report }
  5. var
  6.   WhichSector, AdjacentSector : sectorIndex;
  7. begin
  8.   WhichSector := readNumber( f );
  9.   if WhichSector <> 0 then
  10.     begin
  11.       read(f, AdjacentSector );
  12.       with space.sectors[WhichSector] do
  13.         if AdjacentSector = 0 then
  14.           number := 0
  15.         else
  16.           begin
  17.             number := 1;
  18.             data[1] := AdjacentSector;
  19.             while not eoln( f ) do
  20.               begin
  21.                 read( f, AdjacentSector );
  22.                 number := number + 1;
  23.                 data[number] := AdjacentSector;
  24.               end; {while}
  25.           end; {if}
  26.     end; {if}
  27.   readln( f );
  28. end; {Parse I Report Line}
  29.  
  30. procedure PartVIII( var data : text; var space : TheVoid );
  31. { read the sector report from the data file }
  32. begin
  33.   while not eof( data ) do
  34.     parseIReportLine( data,  space );
  35.   SaveData( g, space );
  36. end;
  37.  
  38. procedure GetPercentage( var f : text; var p : percent );
  39. var
  40.   ch : char;
  41. begin
  42.   p := 0;
  43.   read( f, ch );
  44.   repeat
  45.     if ch in ['0'..'9'] then
  46.       begin
  47.         p := 10 * p + ord(ch) - ord('0');
  48.       end;
  49.     read( f, ch );
  50.   until (ch = '%') or eof( f );
  51. end; {Get Percentage}
  52.  
  53. procedure ParseRReportLine( var f : text; var space : TheVoid );
  54. { Given a list of ports, figure out the relevant info }
  55. var
  56.   WhichPort  : PortIndex;
  57.   CurrSector : SectorIndex;
  58.   temp       : char;
  59.   item       : goods;
  60. begin
  61.   CurrSector := readNumber( f );
  62.   read( f, temp );
  63.   if (CurrSector <> 0) then
  64.     if temp = '0' then
  65.       begin
  66.         WhichPort := PortNumber( CurrSector );
  67.         if WhichPort <> 0 then                           { scanner blocked }
  68.           for item := Fuel to Equipment do               { so flag by with }
  69.             space.ports.data[WhichPort].usage[item] := 0;{ use set to 0    }
  70.       end
  71.     else
  72.       begin
  73.         space.sectors[CurrSector].etc := space.sectors[CurrSector].etc
  74.                                                   or IsPort;
  75.         WhichPort := FindPortSlot( space.ports.top, CurrSector );
  76.         if WhichPort = 0 then
  77.           begin
  78.             writeln('Too many ports!  Please recompile with a larger');
  79.             writeln('MAXPORTS value.  Aborting...');
  80.             readln;
  81.             halt;
  82.           end; {if}
  83.         space.ports.data[WhichPort].where := CurrSector;
  84.         for item := Fuel to equipment do
  85.           with space.ports.data[WhichPort] do
  86.             begin
  87.               read( f, amts[item] );
  88.               if temp = '-' then
  89.                 amts[item] := -amts[item];
  90.               GetPercentage( f, usage[item] );
  91.               read( f, temp );
  92.               if item <> equipment then
  93.                 read( f, temp );
  94.             end; {for}
  95.         space.sectors[CurrSector].PortType :=
  96.             ComputePortType( space.ports.data[WhichPort].amts);
  97.       end; {if}
  98. end; {Parse Report}
  99.  
  100. procedure PartIX( var data : text; var space : TheVoid );
  101. { read the ports report from the data file }
  102. begin
  103. {   FindFirstIReportLine( data );  ??? can we assume that it starts with
  104.                                    valid entries?  }
  105.   while not eof( data ) do
  106.     parseRReportLine( data, space );
  107.   SaveData( g, space );
  108. end;
  109.