{$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 menus9;

interface

uses
 tstring;

procedure loadscreen(rasse,id,_x,_y,_z,location:longint);

implementation

uses
{$ifndef unix}
 crt,
{$else}
 xcrt,
{$endif}
 data,
 evgraph,
 grafik,
 kb,
 menus5,
 schedule,
 types,
 utils,
 vbios;

procedure loadscreen(rasse,id,_x,_y,_z,location:longint);
var
 racesa:array[0..31] of boolean;
 racesl:longint;
 i:byte;
 redraw:byte;
 c:char;
 sc:byte;
 o:t_bdata;
begin
 for i:=0 to 31 do racesa[i]:=israce(i);
 repeat
  clearscreen(0);
  initb(o,0,0,80,30,0,0);
  writeg(o,#0'C'#$f'Rasse laden:'#10);
  for i:=0 to 15 do begin
   if racesa[i*2] then writeg(o,#13#10#0'C'#$c+az10[i*2+1]+':'#0'C'#$e+mkstring(rassen[i*2]))
   else writeg(o,#13#10#0'C'#$7+az10[i*2+1]+':'+mkstring(rassen[i*2]));
   if racesa[i*2+1] then writeg(o,#0'X'#40#0'C'#$c+az10[i*2+2]+':'#0'C'#$e+mkstring(rassen[i*2+1]))
   else writeg(o,#0'X'#40#0'C'#$7+az10[i*2+2]+':'+mkstring(rassen[i*2+1]));
  end;
  writeg(o,#0'C'#7#13#10#10#10'ESC = Ende');
  redraw:=0;
  repeat
   c:=upcase(kbreadkey);
   if c=#0 then sc:=byte(kbreadkey) else sc:=kbscancode;
   case c of
    'A'..'V','0'..'9':begin
     i:=pos(c,az10)-1;
     if racesa[i] then begin
      if openrace(i) then begin
       ok;
       SetOverscanReg(0);
       repeat
	runmenu(mainmenu,i,0,0,0,0,0);
	menushedule;
	redraw:=byte(saverace);
	if redraw=0 then begin
	 clearscreen(0);
	 gotoxy(1,1);
	 textattr:=$c;
	 write('Speichern nicht m”glich'#13#10+
	       'Trotzdem beenden?');
	 if janein(true) then redraw:=2;
	end;
       until redraw>0;
      end else begin
       clearscreen(0);
       gotoxy(1,1);
       textattr:=$c;
       write('Fehler '+w2s(error,0,false,true)+' beim ™ffnen der Dateien (m”glicherweise Schreibschutz)');
       gotoxy(1,3);
       write('*** Taste ***');
       if kbreadkey=#0 then kbreadkey;
       redraw:=1;
      end;
     end else beep;
     redraw:=1;
    end;
    #0:if sc<>0 then beep else SetOverscanReg(random(15)+1);
    #27:begin
     exitmenu;
     exit;
    end;
   end;
  until redraw>0;
 until false;
end;

end.

