{$ifndef unix}
{$A+,B-,D+,E+,F-,G+,I+,L+,N+,O+,P+,Q-,R-,S+,T-,V-,X+,Y+}
{$else}
{$B-,I+,S-,T-,X+}
{$endif}
unit menus5;

interface

procedure mainmenu(rasse,_id,_x,_y,_z,_Location:longint);

implementation

uses
 tstring,
 types,
 utils,
 kb,
 evgraph,
 vbios,
{$ifndef unix}
 crt,
{$else}
 xcrt,
{$endif}
 grafik,
 data,
 maus2kb,
 schedule,
 menus1,
 menus2,
 menus3,
 menus4,
 menus6,
 menus7,
 menus8,
 listen;

procedure mainmenu(rasse,_id,_x,_y,_z,_Location:longint);
var
 o:t_bdata;
 i,j:word;
 id,id1:longint;

 ownplanets,
 ownships,
 ownbases:word;

 c:char;
 sc:byte;

 dmx,dmy,dx,dy:integer;
 t:longint;
 planet:tp_planet;

procedure writexy(x,y:word;s:string);
var
 c:byte;
begin
{$ifndef unix}
 c:=random(7)+9;
 while s<>'' do begin
  writechar(s[1],x,y,c,0);
  delete(s,1,1);
  inc(x,8);
 end;
{$else}
 gwritesa(length(s),@s[1],textattr,x,y);
{$endif}
end;

begin
 dx:=370;
 dy:=106;
 dmx:=1-2*random(2);
 dmy:=1-2*random(2);

 id:=firstplan(0,0,0,0,0);
 id1:=id;
 ownplanets:=0;
 repeat
  if getplan(id)^.racetyp=rasse then inc(ownplanets);
  id:=nextplan(id,0,0,0,0,0);
 until id1=id;

 id:=firstship(0,0,0,0,0);
 id1:=id;
 ownships:=0;
 repeat
  if getship(id)^.owner=rasse then inc(ownships);
  id:=nextship(id,0,0,0,0,0);
 until id1=id;

 id:=firstbase(0,0,0,0,0);
 id1:=id;
 ownbases:=0;
 repeat
  if getbase(id)^.owner=rasse then inc(ownbases);
  id:=nextbase(id,0,0,0,0,0);
 until id1=id;

 clearscreen(0);
 window(3,3,632,464);
 window(8,8,627,459);
 initb(o,10,10,77,28,15,0);
 writeg(o,#12#0'Y'#5+rassen[rasse]+#13#10#10#10+
  ' Planeten :'#0'C'#$a+w2s(ownplanets,5,false,false)
   +#0'C'#$e'  sichtbar:'#0'C'#$a+w2s(planetsanz,5,false,false)+#13#10#0'C'#$f+
  ' Schiffe  :'#0'C'#$a+w2s(ownships,5,false,false)
   +#0'C'#$e'  sichtbar:'#0'C'#$a+w2s(shipsanz,5,false,false)+#13#10#0'C'#$f+
  ' Raumbasen:'#0'C'#$a+w2s(ownbases,5,false,false)
   +#0'C'#$e'  sichtbar:'#0'C'#$a+w2s(basesanz,5,false,false));
 showp(16,16,rasse+242);

 writeg(o,#13#10#10#10#10#0'C'#$c' Shift-F12: S'#0'C'#$e'chiffe      '#200'   '+
	#0'C'#$7'Shift-F11: Schiffe an aktueller Position');
 writeg(o,#13#10#0'C'#$c'  Ctrl-F12: P'#0'C'#$e'laneten     '#201'   '#0'C'#$7' Ctrl-F11: Planeten an aktueller Position');
 writeg(o,#13#10#0'C'#$c'   Alt-F12: B'#0'C'#$e'asen        '#202'   '#0'C'#$7'  Alt-F11: Basen an aktueller Position');
 writeg(o,#13#10#0'C'#$c'       F12: '#0'C'#$e'M'#0'C'#$c'i'#0'C'#$e'nenfelder  '#203'   '#0'C'#$7'      F11: Dieses Men');
 writeg(o,#0'C'#8#0'X'#27#10'{'#27'diese'#24' Tasten sind in den Mens verfgbar}');

 writeg(o,#13#10#10#10#10#0'C'#$a#26#210#0'C'#$c' M'#0'C'#$f'eldungen: '#0'C'#$a+w2s(msganz,4,false,false));
 writeg(o,#13#10#10#0'C'#$c#210#26#0'C'#$c' N'#0'C'#$f'achricht senden ...');
 writeg(o,#13#10#10#0'C'#$d#26#211#0'C'#$c' Z'#0'C'#$f'ug beenden');

 repeat
  c:=upcase(kbxreadkey);
  if c=#0 then sc:=byte(kbxreadkey) else sc:=kbscancode;
  case c of
   #0:case sc of
    $48:dmy:=-1;
    $50:dmy:=1;
    $4b:dmx:=-1;
    $4d:dmx:=1;
    255:begin
     writexy(dx,dy,' (c) by Rex Imperia!!!');
     if dx=270 then dmx:=1 else if dx=619-22*8 then dmx:=-1;
     if dy=20 then dmy:=1 else if dy=219-16 then dmy:=-1;
     inc(dy,dmy);
     inc(dx,dmx);
     delay(10);
    end;
    $88:begin
     t:=shiplist(rasse,0,0,0,1,-1,'Schiff whlen',0);
     if t>=0 then runmenu(shipmenu,rasse,t,0,0,0,0);
     exit;
    end;
    $8a:begin
     t:=planlist(rasse,0,0,0,1);
     if t>=0 then runmenu(planmenu,rasse,t,0,0,0,0);
     exit;
    end;
    $8c:begin
     t:=baselist(rasse,0,0,0,1);
     if t>=0 then runmenu(basemenu,rasse,t,0,0,0,0);
     exit;
    end;
    $86:begin
     t:=firstplan(rasse,0,0,0,1);
     if t<0 then runmenu(minemenu,rasse,0,0,0,0,0)
     else begin
      planet:=getplan(t);
      with planet^ do runmenu(minemenu,rasse,0,posx,posy,posz,0);
     end;
     exit;
    end;
    $87:begin
     runmenu(shipmenu,rasse,firstship(rasse,0,0,0,1),0,0,0,0);
     exit;
    end;
    $89:begin
     runmenu(planmenu,rasse,firstplan(rasse,0,0,0,1),0,0,0,0);
     exit;
    end;
    $8b:begin
     runmenu(basemenu,rasse,firstbase(rasse,0,0,0,1),0,0,0,0);
     exit;
    end;
   end;
   'S':begin
    t:=shiplist(rasse,0,0,0,1,-1,'Schiff whlen',0);
    if t>=0 then runmenu(shipmenu,rasse,t,0,0,0,0);
    exit;
   end;
   'P':begin
    t:=planlist(rasse,0,0,0,1);
    if t>=0 then runmenu(planmenu,rasse,t,0,0,0,0);
    exit;
   end;
   'B':begin
    t:=baselist(rasse,0,0,0,1);
    if t>=0 then runmenu(basemenu,rasse,t,0,0,0,0);
    exit;
   end;
   'M':begin
    runmenu(msgmenu,rasse,0,0,0,0,0);
    exit;
   end;
   'I':begin
    t:=firstplan(rasse,0,0,0,1);
    if t<0 then runmenu(minemenu,rasse,0,0,0,0,0)
    else begin
     planet:=getplan(t);
     with planet^ do runmenu(minemenu,rasse,0,posx,posy,posz,0);
    end;
    exit;
   end;
   'N':begin
    runmenu(writemenu,rasse,0,0,0,0,0);
    exit;
   end;
   'Z':begin
    exitmenu;
    exit;
   end;
  end;
 until false;
end;

end.