home *** CD-ROM | disk | FTP | other *** search
/ Game Killer / Game_Killer.bin / 107.PART2.INC < prev    next >
Text File  |  1992-08-01  |  6KB  |  211 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.   item : goods;
  79.  
  80. begin
  81.   if pos( 'You can buy', line ) > 0 then
  82.     PortType := Class0
  83.   else
  84.     begin              
  85.       readln( f, line );  { blank }
  86.       readln( f, line );  { items }
  87.       readln( f, line );  { ----- }
  88.       skip( f, 11 );
  89.       read( f, ch );
  90.       skip( f, 8 );
  91.       pa[ Fuel ] := readNumber(f);
  92.       use[Fuel] := readNumber(f);
  93.       readln( f );
  94.       if ch = 'B' then
  95.         begin
  96.           PortType := 0;
  97.           pa[ Fuel ] := -pa[ fuel ];
  98.         end {if}
  99.       else
  100.         PortType := 1;
  101.       skip( f, 11 );
  102.       read( f, ch );
  103.       skip( f, 8 );
  104.       pa[ Organics ] := readNumber(f);
  105.       use[Organics] := readNumber(f);
  106.       readln( f );
  107.       if ch = 'B' then
  108.         pa[ Organics ] := -pa[ Organics ]
  109.       else
  110.         PortType := PortType + 2;
  111.       skip( f, 11 );
  112.       read( f, ch );
  113.       skip( f, 8 );
  114.       pa[ Equipment ] := readNumber(f);
  115.       use[Equipment] := readNumber(f);
  116.       readln( f );
  117.       if ch = 'B' then
  118.         pa[ Equipment ] := -pa[ Equipment ]
  119.       else
  120.         PortType := PortType + 4;
  121.       if (pa[ Fuel ]=0) or (pa[ Organics ]=0) or ( pa[ Equipment ] = 0) then
  122.         begin {fuck up}
  123.           writeln('Something is screwy with sector ', s, ' in the log.');
  124.           writeln('Current values: ', pa[Fuel]:6, 
  125.                    pa[organics]:6, pa[equipment]:6);
  126.           write('Hit carriage return to acknowledge:');
  127.           readln;
  128.         end   {fuck up}
  129.       else
  130.         begin
  131.       NewSlot := PortNumber( s );
  132.           if NewSlot = 0 then
  133.         begin
  134.           writeln('New port info in ', s );
  135.           if space.ports.top = MaxPorts then
  136.                 begin
  137.                   writeln('Can''t record all of our port info!');
  138.                   writeln('Need to recompile with larger MaxPorts (currently ', MaxPorts, ')');
  139.                   write('Hit carriage return to acknowledge:');
  140.                   readln;
  141.               halt;
  142.             end; {outta slots}
  143.               inc( space.ports.top );
  144.               NewSlot := space.ports.top;
  145.         end; {new port}
  146.           with ThePorts.data[ NewSlot ] do
  147.             begin
  148.               where := s;
  149.               for item := Fuel to Equipment do
  150.                 change[ item ] := pa[ item ] - amts[ item ];
  151.               amts := pa;
  152.               usage := use;
  153.             end; {else}
  154.         end; {else no fuckup}
  155.     end; {else not class 0}
  156. end; {GetPortStatus}
  157.  
  158. procedure ProcessPorts( var space    : TheVoid;
  159.                             line     : string );
  160. var
  161.   LeftBrack, s : integer;
  162.   ch : char;
  163.   err : string;
  164. begin
  165.   LeftBrack := pos( ']', line );
  166.   delete( line, 1, LeftBrack );
  167.   if bval( line, s ) then
  168.     writeln('error parsing sector ', line )
  169.   else if (s<1) or (s>maxSector) then
  170.     writeln('sector value', s, ' out of bounds ')
  171.   else if not eof( f ) then
  172.     begin
  173.       readln( f );           { next line is blank }
  174.       if not eof( f ) then
  175.         begin
  176.           readln( f, line );
  177.           if (copy( line, 1, 8) = 'Commerce') and (not eof( f )) then
  178.             begin
  179.               if pos( 'Stargate Alpha', line ) > 0 then
  180.                 begin
  181.                   writeln('StarDock found in sector ', s);
  182.                   space.dock := s;
  183.                   space.sectors[ s ].etc := space.sectors[ s ].etc or StarDock;
  184.                 end;
  185.               space.sectors[ s ].etc := space.sectors[ s ].etc or IsPort;
  186.               GetPortStatus( s, space.sectors[ s ].portType, line, space.Ports );
  187.               writeln('Status on port ', s, ' : ', status(space.sectors[s].portType) );
  188.             end; {if}
  189.         end; {if}
  190.     end; {eof}
  191. end; {ProcessPorts}
  192.  
  193. procedure PartII( var space : TheVoid );
  194. var
  195.   line : string;
  196.   ch : char;
  197.   s, i : integer;
  198.   finished : boolean;
  199. begin
  200.   while not eof( f ) do
  201.     begin
  202.       readln( f, line );
  203.       if pos( 'examine?', line ) > 0 then
  204.         processWarps( space )
  205.       else if pos( 'What sector is the port in?', line) > 0 then
  206.         processPorts( space, line );
  207.     end; {while}
  208.   writeln('Log processed... updating now.');
  209.   SaveData( g, space );
  210. end; {PartII}
  211.