diff -r 9505a6f3fe05 -r 6d513913b7a9 hedgewars/uLand.pas --- a/hedgewars/uLand.pas Wed Aug 31 11:08:03 2011 -0400 +++ b/hedgewars/uLand.pas Wed Aug 31 14:47:01 2011 -0400 @@ -30,6 +30,7 @@ procedure initModule; procedure freeModule; +procedure DrawBottomBorder; procedure GenMap; function GenPreview: TPreview; @@ -1222,6 +1223,25 @@ LoadMask(mapname); end; +procedure DrawBottomBorder; // broken out from other borders for doing a floor-only map, or possibly updating bottom during SD +var x, y, w, c: Longword; +begin +for w:= 0 to 5 do // width of 3 allowed hogs to be knocked through with grenade + for x:= leftX to rightX do + begin + Land[cWaterLine-1 - w, x]:= lfIndestructible; + if (x + w) mod 32 < 16 then + c:= AMask + else + c:= AMask or RMask or GMask; // FF00FFFF + + if (cReducedQuality and rqBlurryLand) = 0 then + LandPixels[cWaterLine-1 - w, x]:= c + else + LandPixels[(cWaterLine-1 - w) div 2, x div 2]:= c + end; +end; + procedure GenMap; var x, y, w, c: Longword; begin @@ -1272,7 +1292,7 @@ for w:= 0 to 5 do // width of 3 allowed hogs to be knocked through with grenade begin for y:= topY to LAND_HEIGHT - 1 do - begin + begin Land[y, leftX + w]:= lfIndestructible; Land[y, rightX - w]:= lfIndestructible; if (y + w) mod 32 < 16 then @@ -1281,33 +1301,35 @@ c:= AMask or RMask or GMask; // FF00FFFF if (cReducedQuality and rqBlurryLand) = 0 then - begin + begin LandPixels[y, leftX + w]:= c; LandPixels[y, rightX - w]:= c; - end + end else - begin + begin LandPixels[y div 2, (leftX + w) div 2]:= c; LandPixels[y div 2, (rightX - w) div 2]:= c; + end; end; - end; for x:= leftX to rightX do begin - Land[topY + w, x]:= lfIndestructible; - if (x + w) mod 32 < 16 then - c:= AMask - else - c:= AMask or RMask or GMask; // FF00FFFF + Land[topY + w, x]:= lfIndestructible; + if (x + w) mod 32 < 16 then + c:= AMask + else + c:= AMask or RMask or GMask; // FF00FFFF - if (cReducedQuality and rqBlurryLand) = 0 then - LandPixels[topY + w, x]:= c - else - LandPixels[(topY + w) div 2, x div 2]:= c; + if (cReducedQuality and rqBlurryLand) = 0 then + LandPixels[topY + w, x]:= c + else + LandPixels[(topY + w) div 2, x div 2]:= c; end; end; end; +if (GameFlags and gfBottomBorder) <> 0 then DrawBottomBorder; + if (GameFlags and gfDisableGirders) <> 0 then hasGirders:= false; if ((GameFlags and gfForts) = 0)