home *** CD-ROM | disk | FTP | other *** search
/ Game Killer / Game_Killer.bin / 259.BASEPATH.INC < prev    next >
Text File  |  1991-07-08  |  996b  |  31 lines

  1. function FixPath( start, finish : sector ) : integer;
  2. { Adjusts Distances from start up to point were finish is entered;
  3. returns length of path. }
  4. var
  5.   s : sector;
  6.   breadth : queue;
  7.   daddy, sonny : sector;
  8.   i : warpindex;
  9.   done : boolean;
  10. begin
  11.   for s := 1 to maxSector do
  12.     Distances[s].d := -1;
  13.   breadth.front := 0;
  14.   enqueue( breadth, start, start );
  15.   repeat
  16.       serve( breadth, daddy, sonny );
  17.       if Distances[ sonny ].d = -1 then {haven't hit him before:}
  18.         begin
  19.           distances[ sonny ].d := distances[ daddy ].d + 1;
  20.           distances[ sonny ].s := daddy;
  21.           with space.sectors[ sonny ] do if number > 0 then
  22.             for i := 1 to number do
  23.               enqueue( breadth, sonny, data[ i ] );
  24.           done := sonny = finish;
  25.         end; {if}
  26.   until done or (breadth.front = 0);
  27.   FixPath := distances[ finish ].d;
  28.   for s := 1 to maxSector do
  29.     if distances[s].d = -1 then distances[s].d := maxint;
  30. end; {FixPath}
  31.