hedgewars/uLandGraphics.pas
changeset 5261 2db030882bc9
parent 5179 8d64dcb566ea
child 5266 1c2a7547efaa
equal deleted inserted replaced
5259:926958e3e87b 5261:2db030882bc9
   745             LandPixels[yy, xx]:= 0;
   745             LandPixels[yy, xx]:= 0;
   746 
   746 
   747         Land[Y, X]:= 0;
   747         Land[Y, X]:= 0;
   748         if not pixelsweep then exit(true);
   748         if not pixelsweep then exit(true);
   749         end;
   749         end;
       
   750     end;
       
   751 // a bit of AA for explosions
       
   752 if ((cReducedQuality and rqBlurryLand) = 0) and (Land[Y, X] = 0) and (Y > topY+1) and 
       
   753    (Y < LAND_HEIGHT-2) and (X>leftX+1) and (X<rightX-1) then
       
   754     begin
       
   755     if ((((Land[y, x-1] and lfDamaged) <> 0) and (((Land[y+1,x] and lfDamaged) <> 0)) or ((Land[y-1,x] and lfDamaged) <> 0)) or
       
   756        (((Land[y, x+1] and lfDamaged) <> 0) and (((Land[y-1,x] and lfDamaged) <> 0) or ((Land[y+1,x] and lfDamaged) <> 0)))) then
       
   757         begin
       
   758         if (LandPixels[y,x] = 0) then LandPixels[y,x]:= (cExplosionBorderColor and not AMask) or (128 shl AShift)
       
   759         else
       
   760             LandPixels[y,x]:=
       
   761                             (((((LandPixels[y,x] and RMask shr RShift) div 2)+((cExplosionBorderColor and RMask) shr RShift) div 2) and $FF) shl RShift) or
       
   762                             (((((LandPixels[y,x] and GMask shr GShift) div 2)+((cExplosionBorderColor and GMask) shr GShift) div 2) and $FF) shl GShift) or
       
   763                             (((((LandPixels[y,x] and BMask shr BShift) div 2)+((cExplosionBorderColor and BMask) shr BShift) div 2) and $FF) shl BShift) or ($FF shl AShift);
       
   764         //LandPixels[y,x]:= $FFFFFFFF;
       
   765         Land[y,x]:= lfBasic
       
   766         end
       
   767     else if ((((Land[y, x-1] and lfDamaged) <> 0) and ((Land[y+1,x-1] and lfDamaged) <> 0) and ((Land[y+2,x] and lfDamaged) <> 0)) or
       
   768             (((Land[y, x-1] and lfDamaged) <> 0) and ((Land[y-1,x-1] and lfDamaged) <> 0) and ((Land[y-2,x] and lfDamaged) <> 0)) or
       
   769             (((Land[y, x+1] and lfDamaged) <> 0) and ((Land[y+1,x+1] and lfDamaged) <> 0) and ((Land[y+2,x] and lfDamaged) <> 0)) or
       
   770             (((Land[y, x+1] and lfDamaged) <> 0) and ((Land[y-1,x+1] and lfDamaged) <> 0) and ((Land[y-2,x] and lfDamaged) <> 0)) or
       
   771             (((Land[y+1, x] and lfDamaged) <> 0) and ((Land[y+1,x+1] and lfDamaged) <> 0) and ((Land[y,x+2] and lfDamaged) <> 0)) or
       
   772             (((Land[y-1, x] and lfDamaged) <> 0) and ((Land[y-1,x+1] and lfDamaged) <> 0) and ((Land[y,x+2] and lfDamaged) <> 0)) or
       
   773             (((Land[y+1, x] and lfDamaged) <> 0) and ((Land[y+1,x-1] and lfDamaged) <> 0) and ((Land[y,x-2] and lfDamaged) <> 0)) or
       
   774             (((Land[y-1, x] and lfDamaged) <> 0) and ((Land[y-1,x-1] and lfDamaged) <> 0) and ((Land[y,x-2] and lfDamaged) <> 0))) then
       
   775         begin
       
   776         //LandPixels[y,x]:= (LandPixels[y,x] and not AMask) or (64 shl AShift);
       
   777         if (LandPixels[y,x] = 0) then LandPixels[y,x]:= (cExplosionBorderColor and not AMask) or (128 shl AShift)
       
   778         else
       
   779             LandPixels[y,x]:=
       
   780                             (((((LandPixels[y,x] and RMask shr RShift) * 3 div 4)+((cExplosionBorderColor and RMask) shr RShift) div 4) and $FF) shl RShift) or
       
   781                             (((((LandPixels[y,x] and GMask shr GShift) * 3 div 4)+((cExplosionBorderColor and GMask) shr GShift) div 4) and $FF) shl GShift) or
       
   782                             (((((LandPixels[y,x] and BMask shr BShift) * 3 div 4)+((cExplosionBorderColor and BMask) shr BShift) div 4) and $FF) shl BShift) or ($FF shl AShift);
       
   783         //LandPixels[y,x]:= $FFFFFFFF;
       
   784         Land[y,x]:= lfBasic
       
   785         end
   750     end;
   786     end;
   751 Despeckle:= false
   787 Despeckle:= false
   752 end;
   788 end;
   753 
   789 
   754 function SweepDirty: boolean;
   790 function SweepDirty: boolean;