home *** CD-ROM | disk | FTP | other *** search
/ Game Killer / Game_Killer.bin / 112.PATHSTUF.INC < prev    next >
Text File  |  1992-07-24  |  4KB  |  137 lines

  1. procedure PathLength;
  2. var
  3.   s1, s2 : sectorindex;
  4.   len    : integer;
  5.   ch     : char;
  6. begin
  7.   write('Distance between which two sectors? ');
  8.   s1 := readNumberFromTerminal;
  9.   s2 := readNumberFromTerminal;
  10.   if (s1=0) or (s2=0) then
  11.     exit;
  12.   if space.sectors[ s1 ].number <> Unexplored then
  13.     begin
  14.       len := FixPath( s1, s2, maxint - 1 );
  15.       if len = Error then
  16.         writeln('You don''t know how to get to ', s2, ' from ', s1, '!' )
  17.       else
  18.         begin
  19.           writeln('Known shortest path from ', s1, ' to ', s2, ' is ');
  20.           PrintPath( s1, s2 );
  21.           writeln;
  22.           writeln('Path is of length ', len );
  23.           readln;
  24.         end; {if finite distance}
  25.     end {visited}
  26.   else
  27.     writeln('Never visited ', s1, ' so can''t tell distances leaving it.');
  28.   if space.sectors[ s1 ].number <> UnExplored then
  29.     begin
  30.       len := FixPath( s2, s1, maxint - 1 );
  31.       if len = Error then
  32.         writeln('You don''t know how to get to ', s1, ' from ', s2, '!' )
  33.       else
  34.         begin
  35.           writeln('Known shortest path from ', s2, ' to ', s1, ' is ');
  36.           PrintPath( s2, s1 );
  37.           writeln;
  38.           writeln('Path is of length ', len );
  39.         end; {if finite distance}
  40.     end
  41.   else
  42.     writeln('Never visited ', s2, ' so can''t tell distances leaving it.');
  43. end;
  44.  
  45. procedure NearestFighters;
  46. var
  47.   s           : sectorIndex;
  48.   s1, Closest : sector;
  49. begin
  50.   write('Current ');
  51.   s := GetSector;
  52.   if s = 0 then exit;
  53.   TwoWayDistances( s, distances, false, true );
  54.   Closest := 1;
  55.   for s1 := 1 to maxSector do
  56.     if (space.sectors[ s1 ].portType = Class0) or (s1=space.dock) then
  57.       if distances[ s1 ].d = maxint then
  58.         writeln('You don''t know how to get to ', s1 )
  59.       else
  60.         begin
  61.           writeln('Path to ', s1, ' is of length ', distances[ s1 ].d );
  62.           PrintPath( s, s1 );
  63.           writeln;
  64.           readln;
  65.           if distances[ s1 ].d < distances[ Closest ].d then
  66.             Closest := s1;
  67.         end; {for if else}
  68.   writeln('The closest target for fighters is ', closest );
  69. end; {Nearest Fighters}
  70.  
  71. procedure GetBlockedPorts;
  72. var
  73.   f     : text;
  74.   fname : string;
  75.   p     : portIndex;
  76. begin
  77.   assign( f, GetNewFileName('Name of file to store list of blocked ports? ',
  78.                             'avoids.upl'));
  79.   rewrite( f );
  80.   for p := 1 to space.ports.top do
  81.     begin
  82.       if space.ports.data[p].usage[Equipment] = 0 then
  83.         begin
  84.           writeln( f, 'V', space.ports.data[p].where);
  85.           writeln('sector ', space.ports.data[p].where, ' blocked.');
  86.         end;
  87.     end;
  88.   close( f );
  89. end;
  90.  
  91. procedure StoreCurrentAvoids;
  92. var
  93.   fname,
  94.   line : string;
  95.   f, g : text;
  96.   s    : sectorindex;
  97. begin
  98.   fname := GetOldFileName( 'File captured from avoid listing: ', 'avoids.log');
  99.   if fname = 'abort' then exit;
  100.   assign( g, fname);
  101. {$I-}
  102.   reset( g );
  103. {$I+}
  104.   if ioresult <> 0 then
  105.     exit;
  106.   assign( f, GetNewFileName( 'File to store current avoids: ', 'current.upl'));
  107.   rewrite( f );
  108.   repeat
  109.     readln( g, line );
  110.   until line = '<List Avoided Sectors>';
  111.   s := readNumber( g );
  112.   while s <> 0 do
  113.     begin
  114.       writeln( f, 'V', s );
  115.       s := readNumber( g );
  116.     end; {while}
  117.   close( f );
  118. end;
  119.  
  120. procedure GetAvoidList;
  121. var
  122.   choice : string;
  123. begin
  124.   repeat
  125.     writeln('Store list of <B>locked ports to disk for upload');
  126.     writeln('Store <C>urrent avoids to disk for later upload');
  127.     writeln('<Q>uit' );
  128.     write( 'Your choice? [BCQ] ');
  129.     readln( choice );
  130.     if choice = '' then choice := 'Q';
  131.   until choice[1] in ['b','c','q','B','C','Q'];
  132.   case choice[1] of
  133.     'b','B' : GetBlockedPorts;
  134.     'c','C' : StoreCurrentAvoids;
  135.     'q','Q' : ;
  136.   end; {case}
  137. end;