# HG changeset patch # User unc0rr # Date 1371329171 -14400 # Node ID 20ff80421736959fea978fc4d95f13be1c703a11 # Parent 3774ac58e65e40f37725f4d1f0c4af5b5fb854fd Some fixes to make pas2c+clang compile all engine files diff -r 3774ac58e65e -r 20ff80421736 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Sat Jun 15 23:45:53 2013 +0400 +++ b/hedgewars/GSHandlers.inc Sun Jun 16 00:46:11 2013 +0400 @@ -5210,7 +5210,7 @@ if (Timer = iceCollideWithGround) and ((GameTicks - Power) > groundFreezingTime) then begin - FillRoundInLand(target.x, target.y, iceRadius, icePixel); + FillRoundInLand2(target.x, target.y, iceRadius, icePixel); landRect.x := min(max(target.x - iceRadius, 0), LAND_WIDTH - 1); landRect.y := min(max(target.y - iceRadius, 0), LAND_HEIGHT - 1); landRect.w := min(2*iceRadius, LAND_WIDTH - landRect.x - 1); @@ -5223,7 +5223,7 @@ begin if (iter^.State and gstFrozen = 0) and ((iter^.Kind = gtExplosives) or (iter^.Kind = gtCase) or (iter^.Kind = gtMine)) and - (abs(iter^.X.Round-target.x)+abs(iter^.Y.Round-target.y)+2<2*iceRadius) and (Distance(iter^.X-int2hwFloat(target.x),iter^.Y-int2hwFloat(target.y)) Gear^.Angle) and - (Distance(HHGear^.X-Gear^.X,HHGear^.Y-Gear^.Y) > int2hwFloat(Gear^.Angle))) + (Distance(HHGear^.X-Gear^.X,HHGear^.Y-Gear^.Y) > int2hwFloat(Gear^.Angle)) then begin hogs := GearsNear(Gear^.X, Gear^.Y, gtHedgehog, Gear^.Angle); diff -r 3774ac58e65e -r 20ff80421736 hedgewars/uLandGraphics.pas --- a/hedgewars/uLandGraphics.pas Sat Jun 15 23:45:53 2013 +0400 +++ b/hedgewars/uLandGraphics.pas Sun Jun 16 00:46:11 2013 +0400 @@ -40,7 +40,7 @@ procedure DrawHLinesExplosions(ar: PRangeArray; Radius: LongInt; y, dY: LongInt; Count: Byte); procedure DrawTunnel(X, Y, dX, dY: hwFloat; ticks, HalfWidth: LongInt); procedure FillRoundInLand(X, Y, Radius: LongInt; Value: Longword); -function FillRoundInLand(X, Y, Radius: LongInt; fill: fillType): LongWord; +function FillRoundInLand2(X, Y, Radius: LongInt; fill: fillType): LongWord; procedure ChangeRoundInLand(X, Y, Radius: LongInt; doSet, isCurrent: boolean); function LandBackPixel(x, y: LongInt): LongWord; procedure DrawLine(X1, Y1, X2, Y2: LongInt; Color: Longword); @@ -240,16 +240,16 @@ inc(FillLandCircleSegment, FillLandCircleLine(y - dx, Max(x - dy, 0), Min(x + dy, LAND_WIDTH - 1), fill)); end; -function FillRoundInLand(X, Y, Radius: LongInt; fill: fillType): Longword; inline; -var dx, dy, d: LongInt; +function FillRoundInLand2(X, Y, Radius: LongInt; fill: fillType): Longword; inline; +var dx, dy, d, r: LongInt; begin dx:= 0; dy:= Radius; d:= 3 - 2 * Radius; -FillRoundInLand := 0; +r := 0; while (dx < dy) do begin - inc(FillRoundInLand, FillLandCircleSegment(x, y, dx, dy, fill)); + inc(r, FillLandCircleSegment(x, y, dx, dy, fill)); if (d < 0) then d:= d + 4 * dx + 6 else @@ -260,7 +260,9 @@ inc(dx) end; if (dx = dy) then - inc (FillRoundInLand, FillLandCircleSegment(x, y, dx, dy, fill)); + inc(r, FillLandCircleSegment(x, y, dx, dy, fill)); + +FillRoundInLand2:= r end; @@ -341,13 +343,13 @@ procedure ChangeRoundInLand(X, Y, Radius: LongInt; doSet, isCurrent: boolean); begin if not doSet and isCurrent then - FillRoundInLand(X, Y, Radius, setNotCurrentMask) + FillRoundInLand2(X, Y, Radius, setNotCurrentMask) else if not doSet and (not IsCurrent) then - FillRoundInLand(X, Y, Radius, changePixelSetNotCurrent) + FillRoundInLand2(X, Y, Radius, changePixelSetNotCurrent) else if doSet and IsCurrent then - FillRoundInLand(X, Y, Radius, setCurrentHog) + FillRoundInLand2(X, Y, Radius, setCurrentHog) else if doSet and (not IsCurrent) then - FillRoundInLand(X, Y, Radius, changePixelNotSetNotCurrent); + FillRoundInLand2(X, Y, Radius, changePixelNotSetNotCurrent); end; procedure DrawIceBreak(x, y, iceRadius, iceHeight: Longint); @@ -377,11 +379,11 @@ var tx, ty, dx, dy: Longint; begin - DrawExplosion := FillRoundInLand(x, y, Radius, backgroundPixel); + DrawExplosion := FillRoundInLand2(x, y, Radius, backgroundPixel); if Radius > 20 then - FillRoundInLand(x, y, Radius - 15, nullPixel); + FillRoundInLand2(x, y, Radius - 15, nullPixel); FillRoundInLand(X, Y, Radius, 0); - FillRoundInLand(x, y, Radius + 4, ebcPixel); + FillRoundInLand2(x, y, Radius + 4, ebcPixel); tx:= Max(X - Radius - 5, 0); dx:= Min(X + Radius + 5, LAND_WIDTH) - tx; ty:= Max(Y - Radius - 5, 0); diff -r 3774ac58e65e -r 20ff80421736 hedgewars/uRandom.pas --- a/hedgewars/uRandom.pas Sat Jun 15 23:45:53 2013 +0400 +++ b/hedgewars/uRandom.pas Sun Jun 16 00:46:11 2013 +0400 @@ -31,8 +31,8 @@ uses uFloat; procedure SetRandomSeed(Seed: shortstring; dropAdditionalPart: boolean); // Sets the seed that should be used for generating pseudo-random values. -function GetRandomf: hwFloat; overload; // Returns a pseudo-random hwFloat. -function GetRandom(m: LongWord): LongWord; overload; inline; // Returns a positive pseudo-random integer smaller than m. +function GetRandomf: hwFloat; // Returns a pseudo-random hwFloat. +function GetRandom(m: LongWord): LongWord; inline; // Returns a positive pseudo-random integer smaller than m. procedure AddRandomness(r: LongWord); inline; function rndSign(num: hwFloat): hwFloat; // Returns num with a random chance of having a inverted sign. @@ -92,7 +92,7 @@ GetRandomf.QWordValue:= GetNext end; -function GetRandom(m: LongWord): LongWord; overload; inline; +function GetRandom(m: LongWord): LongWord; inline; begin GetNext; GetRandom:= GetNext mod m diff -r 3774ac58e65e -r 20ff80421736 hedgewars/uVariables.pas --- a/hedgewars/uVariables.pas Sat Jun 15 23:45:53 2013 +0400 +++ b/hedgewars/uVariables.pas Sun Jun 16 00:46:11 2013 +0400 @@ -218,7 +218,7 @@ // these consts are here because they would cause circular dependencies in uConsts/uTypes cPathz: array[TPathType] of shortstring = ( '', // ptNone - '/', // ptData + '//', // ptData '/Graphics', // ptGraphics '/Themes', // ptThemes '/Themes/Bamboo', // ptCurrTheme