hedgewars/uLandGraphics.pas
changeset 8751 4609823efc94
parent 8744 6c87486fd89b
child 8773 7d3af949dd34
child 8774 39754516eee6
equal deleted inserted replaced
8749:1b9f026e9fc6 8751:4609823efc94
   106 if not doSet then
   106 if not doSet then
   107     begin
   107     begin
   108     if ((y + dy) and LAND_HEIGHT_MASK) = 0 then
   108     if ((y + dy) and LAND_HEIGHT_MASK) = 0 then
   109         for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do
   109         for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do
   110             if isCurrent then
   110             if isCurrent then
   111                 Land[y + dy, i]:= Land[y + dy, i] and lfCurrentMask
   111                 Land[y + dy, i]:= Land[y + dy, i] and lfNotCurrentMask
   112             else if Land[y + dy, i] and lfObjMask > 0 then
   112             else if Land[y + dy, i] and lfObjMask > 0 then
   113                 Land[y + dy, i]:= (Land[y + dy, i] and lfNotObjMask) or ((Land[y + dy, i] and lfObjMask) - 1);
   113                 Land[y + dy, i]:= (Land[y + dy, i] and lfNotObjMask) or ((Land[y + dy, i] and lfObjMask) - 1);
   114     if ((y - dy) and LAND_HEIGHT_MASK) = 0 then
   114     if ((y - dy) and LAND_HEIGHT_MASK) = 0 then
   115         for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do
   115         for i:= Max(x - dx, 0) to Min(x + dx, LAND_WIDTH - 1) do
   116             if isCurrent then
   116             if isCurrent then
   117                 Land[y - dy, i]:= Land[y - dy, i] and lfCurrentMask
   117                 Land[y - dy, i]:= Land[y - dy, i] and lfNotCurrentMask
   118             else if Land[y - dy, i] and lfObjMask > 0 then
   118             else if Land[y - dy, i] and lfObjMask > 0 then
   119                 Land[y - dy, i]:= (Land[y - dy, i] and lfNotObjMask) or ((Land[y - dy, i] and lfObjMask) - 1);
   119                 Land[y - dy, i]:= (Land[y - dy, i] and lfNotObjMask) or ((Land[y - dy, i] and lfObjMask) - 1);
   120     if ((y + dx) and LAND_HEIGHT_MASK) = 0 then
   120     if ((y + dx) and LAND_HEIGHT_MASK) = 0 then
   121         for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do
   121         for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do
   122             if isCurrent then
   122             if isCurrent then
   123                 Land[y + dx, i]:= Land[y + dx, i] and lfCurrentMask
   123                 Land[y + dx, i]:= Land[y + dx, i] and lfNotCurrentMask
   124             else if Land[y + dx, i] and lfObjMask > 0 then
   124             else if Land[y + dx, i] and lfObjMask > 0 then
   125                 Land[y + dx, i]:= (Land[y + dx, i] and lfNotObjMask) or ((Land[y + dx, i] and lfObjMask) - 1);
   125                 Land[y + dx, i]:= (Land[y + dx, i] and lfNotObjMask) or ((Land[y + dx, i] and lfObjMask) - 1);
   126     if ((y - dx) and LAND_HEIGHT_MASK) = 0 then
   126     if ((y - dx) and LAND_HEIGHT_MASK) = 0 then
   127         for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do
   127         for i:= Max(x - dy, 0) to Min(x + dy, LAND_WIDTH - 1) do
   128             if isCurrent then
   128             if isCurrent then
   129                 Land[y - dx, i]:= Land[y - dx, i] and lfCurrentMask
   129                 Land[y - dx, i]:= Land[y - dx, i] and lfNotCurrentMask
   130             else if Land[y - dx, i] and lfObjMask > 0 then
   130             else if Land[y - dx, i] and lfObjMask > 0 then
   131                 Land[y - dx, i]:= (Land[y - dx, i] and lfNotObjMask) or ((Land[y - dx, i] and lfObjMask) - 1)
   131                 Land[y - dx, i]:= (Land[y - dx, i] and lfNotObjMask) or ((Land[y - dx, i] and lfObjMask) - 1)
   132     end
   132     end
   133 else
   133 else
   134     begin
   134     begin
   267            begin               
   267            begin               
   268            result := 9;
   268            result := 9;
   269            exit;
   269            exit;
   270            end;
   270            end;
   271 
   271 
   272         if Land[j, i] and $FF00 and not lfIce = 0 then
   272         if Land[j, i] and lfLandMask and not lfIce = 0 then
   273            result := result + 1;
   273            result := result + 1;
   274         end;
   274         end;
   275 end;
   275 end;
   276 
   276 
   277 procedure drawIcePixel(y, x:Longint);
   277 procedure drawIcePixel(y, x:Longint);
   955     begin
   955     begin
   956         xx:= X div 2;
   956         xx:= X div 2;
   957         yy:= Y div 2;
   957         yy:= Y div 2;
   958     end;
   958     end;
   959 
   959 
   960     pixelsweep:= ((Land[Y, X] and $FF00) = 0) and (LandPixels[yy, xx] <> 0);
   960     pixelsweep:= (Land[Y, X] <= lfAllObjMask) and (LandPixels[yy, xx] <> 0);
   961     if (((Land[Y, X] and lfDamaged) <> 0) and ((Land[Y, X] and lfIndestructible) = 0)) or pixelsweep then
   961     if (((Land[Y, X] and lfDamaged) <> 0) and ((Land[Y, X] and lfIndestructible) = 0)) or pixelsweep then
   962     begin
   962     begin
   963         c:= 0;
   963         c:= 0;
   964         for i:= -1 to 1 do
   964         for i:= -1 to 1 do
   965             for j:= -1 to 1 do
   965             for j:= -1 to 1 do