home *** CD-ROM | disk | FTP | other *** search
/ Game Killer / Game_Killer.bin / 108.EDITBASE.INC < prev    next >
Text File  |  1992-06-28  |  5KB  |  198 lines

  1. procedure MakePort;
  2. var
  3.   s : SectorIndex;
  4.   pt : integer;
  5. begin
  6.   write('Make a port out of which ');
  7.   s := GetSector;
  8.   if s <> 0 then
  9.     if space.sectors[ s ].portType <> NotAPort then
  10.       writeln( s, ' is already a port!')
  11.     else
  12.       begin
  13.         space.sectors[s].portType := GetPortType;
  14.         space.sectors[s].etc := space.sectors[s].etc or IsPort;
  15.       end;
  16. end;
  17.  
  18. procedure KillPort;
  19. var
  20.   s : SectorIndex;
  21.   p1 : portIndex;
  22. begin
  23.   write('Remove Record for Port in which ');
  24.   s := GetSector;
  25.   if s <> 0 then
  26.     if space.sectors[s].PortType = NotAPort then
  27.       writeln( 'I have no record of ', s, ' being a port.')
  28.     else
  29.       begin
  30.         space.sectors[s].portType := NotAPort;
  31.         space.sectors[s].etc := space.sectors[s].etc and (not IsPort);
  32.         p1 := portNumber( s );
  33.         space.ports.data[ p1 ] := space.ports.data[ space.ports.top ];
  34.         space.ports.top := space.ports.top - 1;
  35.       end;
  36. end;
  37.  
  38. procedure SetDock;
  39. var
  40.   sd : SectorIndex;
  41. begin
  42.   if space.dock = 0 then
  43.     writeln('Space Dock location is not known')
  44.   else
  45.     writeln('Current space dock in sector ', space.dock );
  46.   write('Put Space Dock in which ');
  47.   sd := GetSector;
  48.   if sd = 0 then
  49.     if not prompt('Make stardock location unknown?') then
  50.       exit;
  51.   if sd = 0 then
  52.     space.sectors[ space.dock ].etc :=
  53.           space.sectors[ space.dock ].etc and (not StarDock)
  54.   else
  55.     space.sectors[ sd ].etc := space.sectors[ sd ].etc or StarDock;
  56.   space.dock := sd;
  57. end;
  58.  
  59. procedure Unexplore;
  60. var
  61.   us : sectorIndex;
  62. begin
  63.   write('Mark as Unexplored Which ');
  64.   us := GetSector;
  65.   if us <> 0 then
  66.     if space.sectors[ us ].number = Unexplored then
  67.       writeln( 'Sector ', us, ' is already marked as unexplored.')
  68.     else
  69.       begin
  70.         writeln('Marking ', us, ' as unexplored.');
  71.         space.sectors[ us ].number := Unexplored;
  72.       end; {if else}
  73. end; {unexplore}
  74.  
  75. procedure AvoidSector;
  76. var
  77.   us : sectorIndex;
  78. begin
  79.   write('Toggle avoid state on which? ');
  80.   us := GetSector;
  81.   if us <> 0 then
  82.     with space.sectors[ us ] do
  83.       if (etc and avoid) = Nothing  then
  84.         begin
  85.           etc := etc or avoid;
  86.           writeln('Sector ', us, ' marked as avoided.');
  87.         end
  88.       else
  89.         begin
  90.           etc := etc and (not avoid);
  91.           writeln('Sector ', us, ' marked as accessible.');
  92.         end;
  93. end; {avoid sector}
  94.  
  95. procedure ClearEtcFlags( name : string; flag : integer );
  96. var
  97.   i : sector;
  98.   p : portindex;
  99. begin
  100.   for i := 1 to MaxSector do
  101.     space.sectors[i].etc := space.sectors[i].etc and (not flag);
  102.   if flag = busted then
  103.     for p := 1 to space.ports.top do                { for "busted" we  }
  104.       space.ports.data[p].bustdate := 0;            { also clear ports }
  105.   writeln('All ', name, ' cleared.');
  106. end;
  107.  
  108. procedure clearflags;
  109. var
  110.   ch : char;
  111. begin
  112.   repeat
  113.     writeln('Which? <A>voids, <B>usts, <F>ighters, <N>otes, <P>orts, <S>pacelanes, <Q>uit: ');
  114.     readln( ch );
  115.     ch := upcase( ch );
  116.   until ch in ['Q', 'A', 'F', 'N', 'P', 'S'];
  117.   case ch of
  118.     'Q' : ;
  119.     'A' : ClearEtcFlags( 'avoids', avoid );
  120.     'B' : ClearEtcFlags( 'busts', busted );
  121.     'F' : ClearEtcFlags( 'fighter clouds', HasFighters );
  122.     'N' : begin
  123.             ClearEtcFlags( 'sector notes', NoteExists );
  124.             space.notes.top := 0;
  125.           end;
  126.     'P' : begin
  127.             ClearEtcFlags( 'port ID''s', IsPort );
  128.             space.ports.top := 0;
  129.           end;
  130.     'S' : ClearEtcFlags( 'Major Space Lane ID''s', SpaceLane );
  131.   end; {case}
  132. end;
  133.  
  134. procedure ListEtcFlags( name : string; flag : integer );
  135. var
  136.   i : sector;
  137. begin
  138.   writeln('Sectors marked ', name);
  139.   for i := 1 to MaxSector do
  140.     if (space.sectors[i].etc and flag) <> Nothing then
  141.       write( i : 5 );
  142.   writeln;
  143. end;
  144.  
  145. procedure listFlags;
  146. var
  147.   ch : char;
  148. begin
  149.   repeat
  150.     writeln('Which? <A>voids, <B>usts, <F>ighters, <N>otes, <P>orts, <S>pacelanes, <Q>uit: ');
  151.     readln( ch );
  152.     ch := upcase( ch );
  153.   until ch in ['Q', 'A', 'B', 'F', 'N', 'P', 'S'];
  154.   case ch of
  155.     'Q' : ;
  156.     'A' : ListEtcFlags( 'to be avoided', avoid );
  157.     'B' : ListEtcFlags( 'bust sites', busted );
  158.     'F' : ListEtcFlags( 'as having fighters', HasFighters );
  159.     'N' : ListEtcFlags( 'with notes', NoteExists );
  160.     'P' : ListEtcFlags( 'as a port', IsPort );
  161.     'S' : ListEtcFlags( 'as the Major Space Lanes', SpaceLane );
  162.   end; {case}
  163. end;
  164.  
  165. procedure EditMenu;
  166. { choices for direct editing the data base }
  167. var
  168.   ch : char;
  169. begin
  170.   repeat
  171.     repeat
  172.       writeln('Declare a sector to be a <P>ort');
  173.       writeln('Declare a sector <N>OT to be a port');
  174.       writeln('Define location of Star <D>ock');
  175.       writeln('Make sector <U>nexplored');
  176.       writeln('Toggle sector a<V>oidance');
  177.       writeln('<L>ist flagged sectors');
  178.       writeln('<C>lear all flagged sectors');
  179.       writeln;
  180.       writeln('<Q>uit');
  181.       writeln;
  182.       write('Your choice? ');
  183.       readln( ch );
  184.       ch := upcase( ch );
  185.     until ch in ['P', 'N', 'D', 'U', 'V', 'C', 'L', 'Q'];
  186.     case ch of
  187.       'P' : Makeport;
  188.       'N' : Killport;
  189.       'D' : setDock;
  190.       'U' : unexplore;
  191.       'V' : avoidSector;
  192.       'C' : clearFlags;
  193.       'L' : listFlags;
  194.       'Q' : ;
  195.     end; {case}
  196.   until ch = 'Q';
  197. end; {Edit Menu}
  198.