hedgewars/uLandGraphics.pas
changeset 3697 d5b30d6373fc
parent 3689 e2be39ee19f0
child 3749 d0920e92008e
equal deleted inserted replaced
3695:c11abf387a7d 3697:d5b30d6373fc
   228        if ((Land[t, i] and lfBasic) <> 0) then
   228        if ((Land[t, i] and lfBasic) <> 0) then
   229            begin
   229            begin
   230            inc(cnt);
   230            inc(cnt);
   231            if (cReducedQuality and rqBlurryLand) = 0 then
   231            if (cReducedQuality and rqBlurryLand) = 0 then
   232            LandPixels[t, i]:= LandBackPixel(i, t)
   232            LandPixels[t, i]:= LandBackPixel(i, t)
   233             else 
   233             else
   234            LandPixels[t div 2, i div 2]:= LandBackPixel(i, t)
   234            LandPixels[t div 2, i div 2]:= LandBackPixel(i, t)
   235            end
   235            end
   236        else
   236        else
   237             if ((Land[t, i] and lfObject) <> 0) then
   237             if ((Land[t, i] and lfObject) <> 0) then
   238             if (cReducedQuality and rqBlurryLand) = 0 then
   238             if (cReducedQuality and rqBlurryLand) = 0 then
   246        if ((Land[t, i] and lfBasic) <> 0) then
   246        if ((Land[t, i] and lfBasic) <> 0) then
   247            begin
   247            begin
   248            inc(cnt);
   248            inc(cnt);
   249            if (cReducedQuality and rqBlurryLand) = 0 then
   249            if (cReducedQuality and rqBlurryLand) = 0 then
   250                LandPixels[t, i]:= LandBackPixel(i, t)
   250                LandPixels[t, i]:= LandBackPixel(i, t)
   251            else 
   251            else
   252                LandPixels[t div 2, i div 2]:= LandBackPixel(i, t)
   252                LandPixels[t div 2, i div 2]:= LandBackPixel(i, t)
   253            end
   253            end
   254        else
   254        else
   255           if ((Land[t, i] and lfObject) <> 0) then
   255           if ((Land[t, i] and lfObject) <> 0) then
   256               if (cReducedQuality and rqBlurryLand) = 0 then
   256               if (cReducedQuality and rqBlurryLand) = 0 then
   282 if (t and LAND_HEIGHT_MASK) = 0 then
   282 if (t and LAND_HEIGHT_MASK) = 0 then
   283    for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do
   283    for i:= max(x - dx, 0) to min(x + dx, LAND_WIDTH - 1) do
   284        if ((Land[t, i] and lfBasic) <> 0) or ((Land[t, i] and lfObject) <> 0) then
   284        if ((Land[t, i] and lfBasic) <> 0) or ((Land[t, i] and lfObject) <> 0) then
   285           begin
   285           begin
   286            if (cReducedQuality and rqBlurryLand) = 0 then
   286            if (cReducedQuality and rqBlurryLand) = 0 then
   287               LandPixels[t, i]:= cExplosionBorderColor 
   287               LandPixels[t, i]:= cExplosionBorderColor
   288             else
   288             else
   289               LandPixels[t div 2, i div 2]:= cExplosionBorderColor;
   289               LandPixels[t div 2, i div 2]:= cExplosionBorderColor;
   290           Land[t, i]:= Land[t, i] or lfDamaged;
   290           Land[t, i]:= Land[t, i] or lfDamaged;
   291           //Despeckle(i, t);
   291           //Despeckle(i, t);
   292           LandDirty[t div 32, i div 32]:= 1;
   292           LandDirty[t div 32, i div 32]:= 1;
   311 if (t and LAND_HEIGHT_MASK) = 0 then
   311 if (t and LAND_HEIGHT_MASK) = 0 then
   312    for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do
   312    for i:= max(x - dy, 0) to min(x + dy, LAND_WIDTH - 1) do
   313        if ((Land[t, i] and lfBasic) <> 0) or ((Land[t, i] and lfObject) <> 0) then
   313        if ((Land[t, i] and lfBasic) <> 0) or ((Land[t, i] and lfObject) <> 0) then
   314           begin
   314           begin
   315            if (cReducedQuality and rqBlurryLand) = 0 then
   315            if (cReducedQuality and rqBlurryLand) = 0 then
   316           LandPixels[t, i]:= cExplosionBorderColor 
   316           LandPixels[t, i]:= cExplosionBorderColor
   317             else
   317             else
   318           LandPixels[t div 2, i div 2]:= cExplosionBorderColor;
   318           LandPixels[t div 2, i div 2]:= cExplosionBorderColor;
   319 
   319 
   320           Land[t, i]:= Land[t, i] or lfDamaged;
   320           Land[t, i]:= Land[t, i] or lfDamaged;
   321           //Despeckle(i, y - dy);
   321           //Despeckle(i, y - dy);
   411             if (Land[ty, tx] and lfBasic) <> 0 then
   411             if (Land[ty, tx] and lfBasic) <> 0 then
   412                 if (cReducedQuality and rqBlurryLand) = 0 then
   412                 if (cReducedQuality and rqBlurryLand) = 0 then
   413                     LandPixels[ty, tx]:= LandBackPixel(tx, ty)
   413                     LandPixels[ty, tx]:= LandBackPixel(tx, ty)
   414                 else
   414                 else
   415                     LandPixels[ty div 2, tx div 2]:= LandBackPixel(tx, ty)
   415                     LandPixels[ty div 2, tx div 2]:= LandBackPixel(tx, ty)
   416             else 
   416             else
   417                 if (Land[ty, tx] and lfObject) <> 0 then
   417                 if (Land[ty, tx] and lfObject) <> 0 then
   418                     if (cReducedQuality and rqBlurryLand) = 0 then
   418                     if (cReducedQuality and rqBlurryLand) = 0 then
   419                         LandPixels[ty, tx]:= 0
   419                         LandPixels[ty, tx]:= 0
   420                     else
   420                     else
   421                         LandPixels[ty div 2, tx div 2]:= 0;
   421                         LandPixels[ty div 2, tx div 2]:= 0;
   471     Y:= Y + dY;
   471     Y:= Y + dY;
   472     tx:= hwRound(X);
   472     tx:= hwRound(X);
   473     ty:= hwRound(Y);
   473     ty:= hwRound(Y);
   474     if ((ty and LAND_HEIGHT_MASK) = 0) and
   474     if ((ty and LAND_HEIGHT_MASK) = 0) and
   475        ((tx and LAND_WIDTH_MASK) = 0) and
   475        ((tx and LAND_WIDTH_MASK) = 0) and
   476        (((Land[ty, tx] and lfBasic) <> 0) or 
   476        (((Land[ty, tx] and lfBasic) <> 0) or
   477        ((Land[ty, tx] and lfObject) <> 0)) then
   477        ((Land[ty, tx] and lfObject) <> 0)) then
   478         begin
   478         begin
   479         Land[ty, tx]:= Land[ty, tx] or lfDamaged;
   479         Land[ty, tx]:= Land[ty, tx] or lfDamaged;
   480             if (cReducedQuality and rqBlurryLand) = 0 then
   480             if (cReducedQuality and rqBlurryLand) = 0 then
   481             LandPixels[ty, tx]:= cExplosionBorderColor
   481             LandPixels[ty, tx]:= cExplosionBorderColor
   497     Y:= Y + dY;
   497     Y:= Y + dY;
   498     tx:= hwRound(X);
   498     tx:= hwRound(X);
   499     ty:= hwRound(Y);
   499     ty:= hwRound(Y);
   500     if ((ty and LAND_HEIGHT_MASK) = 0) and
   500     if ((ty and LAND_HEIGHT_MASK) = 0) and
   501        ((tx and LAND_WIDTH_MASK) = 0) and
   501        ((tx and LAND_WIDTH_MASK) = 0) and
   502        (((Land[ty, tx] and lfBasic) <> 0) or 
   502        (((Land[ty, tx] and lfBasic) <> 0) or
   503        ((Land[ty, tx] and lfObject) <> 0)) then
   503        ((Land[ty, tx] and lfObject) <> 0)) then
   504         begin
   504         begin
   505         Land[ty, tx]:= Land[ty, tx] or lfDamaged;
   505         Land[ty, tx]:= Land[ty, tx] or lfDamaged;
   506             if (cReducedQuality and rqBlurryLand) = 0 then
   506             if (cReducedQuality and rqBlurryLand) = 0 then
   507         LandPixels[ty, tx]:= cExplosionBorderColor
   507         LandPixels[ty, tx]:= cExplosionBorderColor
   523             if (Land[ty, tx] and lfBasic) <> 0 then
   523             if (Land[ty, tx] and lfBasic) <> 0 then
   524                 if (cReducedQuality and rqBlurryLand) = 0 then
   524                 if (cReducedQuality and rqBlurryLand) = 0 then
   525                     LandPixels[ty, tx]:= LandBackPixel(tx, ty)
   525                     LandPixels[ty, tx]:= LandBackPixel(tx, ty)
   526                 else
   526                 else
   527                     LandPixels[ty div 2, tx div 2]:= LandBackPixel(tx, ty)
   527                     LandPixels[ty div 2, tx div 2]:= LandBackPixel(tx, ty)
   528             else 
   528             else
   529               if (Land[ty, tx] and lfObject) <> 0 then
   529               if (Land[ty, tx] and lfObject) <> 0 then
   530                 if (cReducedQuality and rqBlurryLand) = 0 then
   530                 if (cReducedQuality and rqBlurryLand) = 0 then
   531                 LandPixels[ty, tx]:= 0
   531                 LandPixels[ty, tx]:= 0
   532                 else
   532                 else
   533                 LandPixels[ty div 2, tx div 2]:= 0;
   533                 LandPixels[ty div 2, tx div 2]:= 0;
   541     Y:= Y + dY;
   541     Y:= Y + dY;
   542     tx:= hwRound(X);
   542     tx:= hwRound(X);
   543     ty:= hwRound(Y);
   543     ty:= hwRound(Y);
   544     if ((ty and LAND_HEIGHT_MASK) = 0) and
   544     if ((ty and LAND_HEIGHT_MASK) = 0) and
   545        ((tx and LAND_WIDTH_MASK) = 0) and
   545        ((tx and LAND_WIDTH_MASK) = 0) and
   546        (((Land[ty, tx] and lfBasic) <> 0) or 
   546        (((Land[ty, tx] and lfBasic) <> 0) or
   547        ((Land[ty, tx] and lfObject) <> 0)) then
   547        ((Land[ty, tx] and lfObject) <> 0)) then
   548         begin
   548         begin
   549         Land[ty, tx]:= Land[ty, tx] or lfDamaged;
   549         Land[ty, tx]:= Land[ty, tx] or lfDamaged;
   550         if (cReducedQuality and rqBlurryLand) = 0 then
   550         if (cReducedQuality and rqBlurryLand) = 0 then
   551         LandPixels[ty, tx]:= cExplosionBorderColor
   551         LandPixels[ty, tx]:= cExplosionBorderColor
   568     Y:= Y + dY;
   568     Y:= Y + dY;
   569     tx:= hwRound(X);
   569     tx:= hwRound(X);
   570     ty:= hwRound(Y);
   570     ty:= hwRound(Y);
   571     if ((ty and LAND_HEIGHT_MASK) = 0) and
   571     if ((ty and LAND_HEIGHT_MASK) = 0) and
   572        ((tx and LAND_WIDTH_MASK) = 0) and
   572        ((tx and LAND_WIDTH_MASK) = 0) and
   573        (((Land[ty, tx] and lfBasic) <> 0) or 
   573        (((Land[ty, tx] and lfBasic) <> 0) or
   574        ((Land[ty, tx] and lfObject) <> 0)) then
   574        ((Land[ty, tx] and lfObject) <> 0)) then
   575         begin
   575         begin
   576         Land[ty, tx]:= Land[ty, tx] or lfDamaged;
   576         Land[ty, tx]:= Land[ty, tx] or lfDamaged;
   577         if (cReducedQuality and rqBlurryLand) = 0 then
   577         if (cReducedQuality and rqBlurryLand) = 0 then
   578         LandPixels[ty, tx]:= cExplosionBorderColor
   578         LandPixels[ty, tx]:= cExplosionBorderColor
   686                 end;
   686                 end;
   687 
   687 
   688     if c < 4 then // 0-3 neighbours
   688     if c < 4 then // 0-3 neighbours
   689         begin
   689         begin
   690         if (cReducedQuality and rqBlurryLand) = 0 then
   690         if (cReducedQuality and rqBlurryLand) = 0 then
   691             if (Land[Y, X] and lfBasic) <> 0 then 
   691             if (Land[Y, X] and lfBasic) <> 0 then
   692                 LandPixels[Y, X]:= LandBackPixel(X, Y) 
   692                 LandPixels[Y, X]:= LandBackPixel(X, Y)
   693             else
   693             else
   694                 LandPixels[Y, X]:= 0
   694                 LandPixels[Y, X]:= 0
   695         else
   695         else
   696             if (Land[Y, X] and lfBasic) <> 0 then 
   696             if (Land[Y, X] and lfBasic) <> 0 then
   697                 LandPixels[Y div 2, X div 2]:= LandBackPixel(X, Y) 
   697                 LandPixels[Y div 2, X div 2]:= LandBackPixel(X, Y)
   698             else
   698             else
   699                 LandPixels[Y div 2, X div 2]:= 0;
   699                 LandPixels[Y div 2, X div 2]:= 0;
   700 
   700 
   701         Land[Y, X]:= 0;
   701         Land[Y, X]:= 0;
   702         exit(true);
   702         exit(true);