home *** CD-ROM | disk | FTP | other *** search
/ Game Killer / Game_Killer.bin / 262.PART2.INC < prev    next >
Text File  |  1991-07-08  |  6KB  |  200 lines

  1. {part 2.inc}
  2.  
  3. procedure LoadData( var TheSector : SectorInfo );
  4. var
  5.   ch : char;
  6. begin
  7.   with TheSector do
  8.     begin
  9.       number := 0;
  10.       repeat
  11.         read( f, ch );
  12.       until ch = ':';
  13.       ch := '-';
  14.       while ch = '-' do
  15.         begin
  16.           number := number + 1;
  17.           data[ number ] := ReadNumber(f);
  18.           read( f, ch );
  19.         end; {while}
  20.       readln( f );
  21.     end; {with}
  22. end; {LoadData}
  23.  
  24. procedure CheckData( var TheSector : SectorInfo );
  25. var
  26.   t  : warpIndex;
  27.   ch : char;
  28. begin
  29.   repeat
  30.     read( f, ch );
  31.   until ch = ':';
  32.   for t := 1 to TheSector.number do
  33.     begin
  34.       if TheSector.data[ t ] <> ReadNumber(f) then
  35.         begin
  36.           write('Log data doesn''t match input data!  Exiting without save!');
  37.           halt;
  38.         end; {if}
  39.       read( f, ch );
  40.     end; {for}
  41.   readln( f );
  42. end; {Data}
  43.  
  44. procedure ProcessWarps( var space : TheVoid );
  45. var
  46.   s    : integer;
  47.   line : string;
  48. begin
  49.   skip( f, 6);
  50.   s := ReadNumber(f);
  51.   writeln('Processing sector ', s );
  52.   if s = 0 then
  53.     begin
  54.       writeln('Something is screwy.  Exiting.');
  55.       readln;
  56.       writeln('Screwup after line:');
  57.       writeln( line );
  58.       readln;
  59.       SaveData( g, space );
  60.       readln;
  61.       halt;
  62.     end;
  63.   if space.sectors[s].number > 0 then
  64.     CheckData( space.sectors[ s ] )
  65.   else
  66.     LoadData( space.sectors[ s ] );
  67. end; {ProcessWarps}
  68.  
  69. procedure GetPortStatus(     s        : sector;
  70.                          var PortType : stuff;
  71.                              line     : string;
  72.                          var ThePorts : Portlist );
  73. var
  74.   ch : char;
  75.   use: PercentArray;
  76.   pa : GoodsArray;
  77.   NewSlot : PortIndex;
  78. begin
  79.   if pos( 'You can buy', line ) > 0 then
  80.     PortType := Class0
  81.   else
  82.     begin              
  83.       readln( f, line );  { blank }
  84.       readln( f, line );  { items }
  85.       readln( f, line );  { ----- }
  86.       skip( f, 11 );
  87.       read( f, ch );
  88.       skip( f, 8 );
  89.       pa[ Fuel ] := readNumber(f);
  90.       use[Fuel] := readNumber(f);
  91.       readln( f );
  92.       if ch = 'B' then
  93.         begin
  94.           PortType := 0;
  95.           pa[ Fuel ] := -pa[ fuel ];
  96.         end {if}
  97.       else
  98.         PortType := 1;
  99.       skip( f, 11 );
  100.       read( f, ch );
  101.       skip( f, 8 );
  102.       pa[ Organics ] := readNumber(f);
  103.       use[Organics] := readNumber(f);
  104.       readln( f );
  105.       if ch = 'B' then
  106.         pa[ Organics ] := -pa[ Organics ]
  107.       else
  108.         PortType := PortType + 2;
  109.       skip( f, 11 );
  110.       read( f, ch );
  111.       skip( f, 8 );
  112.       pa[ Equipment ] := readNumber(f);
  113.       use[Equipment] := readNumber(f);
  114.       readln( f );
  115.       if ch = 'B' then
  116.         pa[ Equipment ] := -pa[ Equipment ]
  117.       else
  118.         PortType := PortType + 4;
  119.       if (pa[ Fuel ]=0) or (pa[ Organics ]=0) or ( pa[ Equipment ] = 0) then
  120.         begin {fuck up}
  121.           writeln('Something is screwy with sector ', s, ' in the log.');
  122.           writeln('Current values: ', pa[Fuel]:6, 
  123.                    pa[organics]:6, pa[equipment]:6);
  124.           write('Hit carriage return to acknowledge:');
  125.           readln;
  126.         end   {fuck up}
  127.       else
  128.         begin
  129.           NewSlot := FindPortSlot( ThePorts.top, s );
  130.           if NewSlot = 0 then
  131.             begin
  132.               writeln('Can''t record all of our port info!');
  133.               writeln('Need to recompile with larger MaxPorts (currently ', MaxPorts, ')');
  134.               write('Hit carriage return to acknowledge:');
  135.               readln;
  136.             end {outta slots}
  137.           else
  138.             begin
  139.               ThePorts.data[ NewSlot ].where := s;
  140.               ThePorts.data[ NewSlot ].amts := pa;
  141.               ThePorts.data[ NewSlot ].usage := use;
  142.             end; {else}
  143.         end; {else no fuckup}
  144.     end; {else not class 0}
  145. end; {GetPortStatus}
  146.  
  147. procedure ProcessPorts( var space    : TheVoid;
  148.                             line     : string );
  149. var
  150.   LeftBrack, s : integer;
  151.   ch : char;
  152.   err : string;
  153. begin
  154.   LeftBrack := pos( ']', line );
  155.   delete( line, 1, LeftBrack );
  156.   if bval( line, s ) then
  157.     writeln('error parsing sector ', line )
  158.   else if (s<1) or (s>maxSector) then
  159.     writeln('sector value', s, ' out of bounds ')
  160.   else if not eof( f ) then
  161.     begin
  162.       readln( f );           { next line is blank }
  163.       if not eof( f ) then
  164.         begin
  165.           readln( f, line );
  166.           if (copy( line, 1, 8) = 'Commerce') and (not eof( f )) then
  167.             begin
  168.               if pos( 'Stargate Alpha', line ) > 0 then
  169.                 begin
  170.                   writeln('StarDock found in sector ', s);
  171.                   space.dock := s;
  172.                   space.sectors[ s ].etc := space.sectors[ s ].etc or StarDock;
  173.                 end;
  174.               space.sectors[ s ].etc := space.sectors[ s ].etc or IsPort;
  175.               GetPortStatus( s, space.sectors[ s ].portType, line, space.Ports );
  176.               writeln('Status on port ', s, ' : ', status(space.sectors[s].portType) );
  177.             end; {if}
  178.         end; {if}
  179.     end; {eof}
  180. end; {ProcessPorts}
  181.  
  182. procedure PartII( var space : TheVoid );
  183. var
  184.   line : string;
  185.   ch : char;
  186.   s, i : integer;
  187.   finished : boolean;
  188. begin
  189.   while not eof( f ) do
  190.     begin
  191.       readln( f, line );
  192.       if pos( 'examine?', line ) > 0 then
  193.         processWarps( space )
  194.       else if pos( 'What sector is the port in?', line) > 0 then
  195.         processPorts( space, line );
  196.     end; {while}
  197.   writeln('Log processed... updating now.');
  198.   SaveData( g, space );
  199. end; {PartII}
  200.