diff -r 5d90d8ca9657 -r 7315870716f2 hedgewars/uLandObjects.pas --- a/hedgewars/uLandObjects.pas Wed Jun 18 01:37:28 2014 +0200 +++ b/hedgewars/uLandObjects.pas Wed Jun 18 15:42:01 2014 +0200 @@ -471,7 +471,7 @@ // Set default water greyscale values if GrayScale then begin - for i:= 0 to 3 do + for i:= Low(SDWaterColorArray) to High(SDWaterColorArray) do begin t:= round(SDWaterColorArray[i].r * RGB_LUMINANCE_RED + SDWaterColorArray[i].g * RGB_LUMINANCE_GREEN + SDWaterColorArray[i].b * RGB_LUMINANCE_BLUE); if t > 255 then @@ -480,7 +480,7 @@ SDWaterColorArray[i].g:= t; SDWaterColorArray[i].b:= t end; - for i:= 0 to 1 do + for i:= Low(WaterColorArray) to High(WaterColorArray) do begin t:= round(WaterColorArray[i].r * RGB_LUMINANCE_RED + WaterColorArray[i].g * RGB_LUMINANCE_GREEN + WaterColorArray[i].b * RGB_LUMINANCE_BLUE); if t > 255 then @@ -558,6 +558,29 @@ else if key = 'water-top' then begin i:= Pos(',', s); + WaterColorArray[1].r:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + WaterColorArray[1].g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + WaterColorArray[1].b:= StrToInt(Trim(s)); + WaterColorArray[1].a := 255; + if GrayScale then + begin + t:= round(WaterColorArray[0].r * RGB_LUMINANCE_RED + WaterColorArray[0].g * RGB_LUMINANCE_GREEN + WaterColorArray[0].b * RGB_LUMINANCE_BLUE); + if t > 255 then + t:= 255; + WaterColorArray[1].r:= t; + WaterColorArray[1].g:= t; + WaterColorArray[1].b:= t + end; + WaterColorArray[3]:= WaterColorArray[1]; + WaterColorArray[5]:= WaterColorArray[1]; + WaterColorArray[7]:= WaterColorArray[1]; + end + else if key = 'water-bottom' then + begin + i:= Pos(',', s); WaterColorArray[0].r:= StrToInt(Trim(Copy(s, 1, Pred(i)))); Delete(s, 1, i); i:= Pos(',', s); @@ -567,35 +590,16 @@ WaterColorArray[0].a := 255; if GrayScale then begin - t:= round(WaterColorArray[0].r * RGB_LUMINANCE_RED + WaterColorArray[0].g * RGB_LUMINANCE_GREEN + WaterColorArray[0].b * RGB_LUMINANCE_BLUE); + t:= round(WaterColorArray[2].r * RGB_LUMINANCE_RED + WaterColorArray[2].g * RGB_LUMINANCE_GREEN + WaterColorArray[2].b * RGB_LUMINANCE_BLUE); if t > 255 then t:= 255; WaterColorArray[0].r:= t; WaterColorArray[0].g:= t; WaterColorArray[0].b:= t end; - WaterColorArray[1]:= WaterColorArray[0]; - end - else if key = 'water-bottom' then - begin - i:= Pos(',', s); - WaterColorArray[2].r:= StrToInt(Trim(Copy(s, 1, Pred(i)))); - Delete(s, 1, i); - i:= Pos(',', s); - WaterColorArray[2].g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); - Delete(s, 1, i); - WaterColorArray[2].b:= StrToInt(Trim(s)); - WaterColorArray[2].a := 255; - if GrayScale then - begin - t:= round(WaterColorArray[2].r * RGB_LUMINANCE_RED + WaterColorArray[2].g * RGB_LUMINANCE_GREEN + WaterColorArray[2].b * RGB_LUMINANCE_BLUE); - if t > 255 then - t:= 255; - WaterColorArray[2].r:= t; - WaterColorArray[2].g:= t; - WaterColorArray[2].b:= t - end; - WaterColorArray[3]:= WaterColorArray[2]; + WaterColorArray[2]:= WaterColorArray[0]; + WaterColorArray[4]:= WaterColorArray[0]; + WaterColorArray[6]:= WaterColorArray[0]; end else if key = 'water-opacity' then begin @@ -713,6 +717,29 @@ else if key = 'sd-water-top' then begin i:= Pos(',', s); + SDWaterColorArray[1].r:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + i:= Pos(',', s); + SDWaterColorArray[1].g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); + Delete(s, 1, i); + SDWaterColorArray[1].b:= StrToInt(Trim(s)); + SDWaterColorArray[1].a := 255; + if GrayScale then + begin + t:= round(SDWaterColorArray[0].r * RGB_LUMINANCE_RED + SDWaterColorArray[0].g * RGB_LUMINANCE_GREEN + SDWaterColorArray[0].b * RGB_LUMINANCE_BLUE); + if t > 255 then + t:= 255; + SDWaterColorArray[1].r:= t; + SDWaterColorArray[1].g:= t; + SDWaterColorArray[1].b:= t + end; + SDWaterColorArray[3]:= SDWaterColorArray[1]; + SDWaterColorArray[5]:= SDWaterColorArray[1]; + SDWaterColorArray[7]:= SDWaterColorArray[1]; + end + else if key = 'sd-water-bottom' then + begin + i:= Pos(',', s); SDWaterColorArray[0].r:= StrToInt(Trim(Copy(s, 1, Pred(i)))); Delete(s, 1, i); i:= Pos(',', s); @@ -722,35 +749,16 @@ SDWaterColorArray[0].a := 255; if GrayScale then begin - t:= round(SDWaterColorArray[0].r * RGB_LUMINANCE_RED + SDWaterColorArray[0].g * RGB_LUMINANCE_GREEN + SDWaterColorArray[0].b * RGB_LUMINANCE_BLUE); + t:= round(SDWaterColorArray[2].r * RGB_LUMINANCE_RED + SDWaterColorArray[2].g * RGB_LUMINANCE_GREEN + SDWaterColorArray[2].b * RGB_LUMINANCE_BLUE); if t > 255 then t:= 255; SDWaterColorArray[0].r:= t; SDWaterColorArray[0].g:= t; SDWaterColorArray[0].b:= t end; - SDWaterColorArray[1]:= SDWaterColorArray[0]; - end - else if key = 'sd-water-bottom' then - begin - i:= Pos(',', s); - SDWaterColorArray[2].r:= StrToInt(Trim(Copy(s, 1, Pred(i)))); - Delete(s, 1, i); - i:= Pos(',', s); - SDWaterColorArray[2].g:= StrToInt(Trim(Copy(s, 1, Pred(i)))); - Delete(s, 1, i); - SDWaterColorArray[2].b:= StrToInt(Trim(s)); - SDWaterColorArray[2].a := 255; - if GrayScale then - begin - t:= round(SDWaterColorArray[2].r * RGB_LUMINANCE_RED + SDWaterColorArray[2].g * RGB_LUMINANCE_GREEN + SDWaterColorArray[2].b * RGB_LUMINANCE_BLUE); - if t > 255 then - t:= 255; - SDWaterColorArray[2].r:= t; - SDWaterColorArray[2].g:= t; - SDWaterColorArray[2].b:= t - end; - SDWaterColorArray[3]:= SDWaterColorArray[2]; + SDWaterColorArray[2]:= SDWaterColorArray[0]; + SDWaterColorArray[4]:= SDWaterColorArray[0]; + SDWaterColorArray[6]:= SDWaterColorArray[0]; end else if key = 'sd-water-opacity' then SDWaterOpacity:= StrToInt(Trim(s))