M.A.X.    Вы вошли как гость
Российский Клуб игроков M.A.X.
 
[Новости]   [Новичку]   [Энциклопедия]   [Документы]   [Файлы]   [Игроки]   [Архивы]   [Архив форума]  
[Новый сайт]   [M.A.X. Gold]   [Партии]  

 
 
 
Архив форума  МаксГолд
[Основной форум] [Голосования] [МаксГолд] [Off-Topic]
 


поправил...  -  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