|
•поправил... - Hruks, 07.08.2008 9:57:00 |
|
|
Написал функцию и проверил - работает. Нужно начало функции drawstats поменять на следующий код: //############################################################################// //Draw stats of units and in info/buy procedure drawstats(xh,yh,xl,yl:longint;un:longint;full,buy:boolean;frm:byte); var st:mstt; j:longint; tp:integer;
procedure parcor(var par,pars:integer;ic:integer); var dlt,add:integer; begin case ic of 0: dlt:=4; 2: dlt:=10; 4: dlt:=10; else dlt:=1; end; if (par mod dlt)<>0 then add:=1 else add:=0; par := par div dlt + add; if (pars mod dlt)<>0 then add:=1 else add:=0; pars := pars div dlt + add; end;
procedure dodrstats(nm:string;par,pars,ic:integer); var xn,yn,i:integer; k,l:real; begin if intf.stats.lft then xn:=xh+2 else xn:=scrx-xh+2; if intf.stats.tp then yn:=yh+1 else yn:=scry-yh+1;
if par>0 then begin if pars/par>0.5 then wrtxtcnt8(@thscrp,xn+25,yn+j*16,stri(pars)+`/`+stri(par),3) else if pars/par>0.25 then wrtxtcnt8(@thscrp,xn+25,yn+j*16,stri(pars)+`/`+stri(par),6) else wrtxtcnt8(@thscrp,xn+25,yn+j*16,stri(pars)+`/`+stri(par),2); wrtxt8(@thscrp,xn+50,yn+j*16,nm,0);
parcor(par,pars,ic);
if par>150 then begin l:=150/par; par:=150; pars:=round(pars*l); end; k:=(xl-xh-85)/par; if k>8 then k:=8;
for i:=0 to pars-1 do putsprtn8(@thscrp,grap[GRP_ICOS],xn+round(i*k)+78,yn+j*16-5+(i mod 5),16,16,ic,0); if pars<>par then for i:=pars to par-1 do putsprtn8(@thscrp,grap[GRP_ICOS],xn+round(i*k)+78,yn+j*16-5+(i mod 5),16,16,ic+1,0);
j:=j+1; end; end;
суть изменений - новая функция parcor которая корректирует отображаемые значения par,pars основываясь на ic. Эта функция parcor(par,pars,ic) вызывается из dodrstats |
|
| |