diff -r e8f2dbabd01b -r 875607ce793d hedgewars/uLandOutline.pas --- a/hedgewars/uLandOutline.pas Sun Mar 09 20:53:11 2014 -0400 +++ b/hedgewars/uLandOutline.pas Mon Mar 10 22:47:29 2014 +0400 @@ -9,8 +9,8 @@ ar: array[0..Pred(cMaxEdgePoints)] of TPoint; end; -procedure DrawEdge(var pa: TPixAr; Color: Longword); -procedure FillLand(x, y: LongInt); +procedure DrawEdge(var pa: TPixAr; value: Word); +procedure FillLand(x, y: LongInt; border, value: Word); procedure BezierizeEdge(var pa: TPixAr; Delta: hwFloat); procedure RandomizePoints(var pa: TPixAr); @@ -56,7 +56,7 @@ end end; -procedure FillLand(x, y: LongInt); +procedure FillLand(x, y: LongInt; border, value: Word); var xl, xr, dir: LongInt; begin Stack.Count:= 0; @@ -68,18 +68,18 @@ while Stack.Count > 0 do begin Pop(xl, xr, y, dir); - while (xl > 0) and (Land[y, xl] <> 0) do + while (xl > 0) and (Land[y, xl] <> border) and (Land[y, xl] <> value) do dec(xl); - while (xr < LAND_WIDTH - 1) and (Land[y, xr] <> 0) do + while (xr < LAND_WIDTH - 1) and (Land[y, xr] <> border) and (Land[y, xr] <> value) do inc(xr); while (xl < xr) do begin - while (xl <= xr) and (Land[y, xl] = 0) do + while (xl <= xr) and ((Land[y, xl] = border) or (Land[y, xl] = value)) do inc(xl); x:= xl; - while (xl <= xr) and (Land[y, xl] <> 0) do + while (xl <= xr) and (Land[y, xl] <> border) and (Land[y, xl] <> value) do begin - Land[y, xl]:= 0; + Land[y, xl]:= value; inc(xl) end; if x < xl then @@ -91,7 +91,7 @@ end; end; -procedure DrawEdge(var pa: TPixAr; Color: Longword); +procedure DrawEdge(var pa: TPixAr; value: Word); var i: LongInt; begin i:= 0; @@ -101,7 +101,7 @@ inc(i, 2) else begin - DrawLine(ar[i].x, ar[i].y, ar[i + 1].x, ar[i + 1].y, Color); + DrawLine(ar[i].x, ar[i].y, ar[i + 1].x, ar[i + 1].y, value); inc(i) end end;