diff -r 17df4c8201f6 -r 08799c901a42 hedgewars/uLandObjects.pas --- a/hedgewars/uLandObjects.pas Sun Dec 08 13:49:11 2013 -0500 +++ b/hedgewars/uLandObjects.pas Sun Dec 08 16:04:40 2013 -0500 @@ -26,7 +26,7 @@ procedure FreeLandObjects(); procedure LoadThemeConfig; procedure BlitImageAndGenerateCollisionInfo(cpX, cpY, Width: Longword; Image: PSDL_Surface); inline; -procedure BlitImageAndGenerateCollisionInfo(cpX, cpY, Width: Longword; Image: PSDL_Surface; extraFlags: Word); +procedure BlitImageAndGenerateCollisionInfo(cpX, cpY, Width: Longword; Image: PSDL_Surface; LandFlags: Word); procedure BlitImageUsingMask(cpX, cpY: Longword; Image, Mask: PSDL_Surface); procedure AddOnLandObjects(Surface: PSDL_Surface); procedure SetLand(var LandWord: Word; Pixel: LongWord); inline; @@ -95,7 +95,7 @@ BlitImageAndGenerateCollisionInfo(cpX, cpY, Width, Image, 0); end; -procedure BlitImageAndGenerateCollisionInfo(cpX, cpY, Width: Longword; Image: PSDL_Surface; extraFlags: Word); +procedure BlitImageAndGenerateCollisionInfo(cpX, cpY, Width: Longword; Image: PSDL_Surface; LandFlags: Word); var p: PLongwordArray; x, y: Longword; bpp: LongInt; @@ -128,7 +128,7 @@ LandPixels[(cpY + y) div 2, (cpX + x) div 2]:= p^[x]; if (Land[cpY + y, cpX + x] <= lfAllObjMask) and ((p^[x] and AMask) <> 0) then - Land[cpY + y, cpX + x]:= lfObject or extraFlags + Land[cpY + y, cpX + x]:= lfObject or LandFlags end; p:= @(p^[Image^.pitch shr 2]) end; @@ -277,8 +277,7 @@ rr.x:= x1; while rr.x < x2 do begin - // I should theme flag this. also snow... - if (Theme = 'Snow') or (Theme = 'Christmas') then + if cIce then BlitImageAndGenerateCollisionInfo(rr.x, y, min(x2 - rr.x, tmpsurf^.w), tmpsurf, lfIce) else BlitImageAndGenerateCollisionInfo(rr.x, y, min(x2 - rr.x, tmpsurf^.w), tmpsurf); @@ -706,6 +705,10 @@ cFlattenFlakes:= true else if key = 'flatten-clouds' then cFlattenClouds:= true + else if key = 'ice' then + cIce:= true + else if key = 'snow' then + cSnow:= true else if key = 'sd-water-top' then begin i:= Pos(',', s);