# HG changeset patch # User nemo # Date 1380559064 14400 # Node ID 167dea42d7d7237dbf9dde4d45c084f899101e4d # Parent 0463f747e83997680156e492348b89453bbabb0b move border back a bit from left/right bounds, bee tweak diff -r 0463f747e839 -r 167dea42d7d7 hedgewars/uGearsHandlersMess.pas --- a/hedgewars/uGearsHandlersMess.pas Sun Sep 29 19:03:15 2013 -0400 +++ b/hedgewars/uGearsHandlersMess.pas Mon Sep 30 12:37:44 2013 -0400 @@ -384,8 +384,7 @@ Gear^.X := Gear^.X + Gear^.dX; Gear^.Y := Gear^.Y + Gear^.dY; - if Gear^.Kind <> gtBee then - CheckGearDrowning(Gear); + CheckGearDrowning(Gear); //if (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) < _0_0002) and if (not isFalling) and ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) < _0_02.QWordValue) then Gear^.State := Gear^.State and (not gstMoving) @@ -969,6 +968,7 @@ dec(Gear^.Timer) else begin + Gear^.State:= Gear^.State and not gstSubmersible; if nuw then begin StopSoundChan(Gear^.SoundChannel); @@ -3201,9 +3201,8 @@ trueAngle: Longword; t: PGear; begin - if WorldWrap(Gear) then - begin - // recycling as temp vars + if WorldWrap(Gear) and (WorldEdge <> weWrap) then + begin Y.isNegative:= false; Y.QWordValue:= 4294967296 * 112; X.isNegative:= false; diff -r 0463f747e839 -r 167dea42d7d7 hedgewars/uGearsList.pas --- a/hedgewars/uGearsList.pas Sun Sep 29 19:03:15 2013 -0400 +++ b/hedgewars/uGearsList.pas Mon Sep 30 12:37:44 2013 -0400 @@ -281,6 +281,7 @@ gear^.RenderTimer:= true; gear^.Elasticity:= _0_9; gear^.Tag:= 0; + gear^.State:= Gear^.State or gstSubmersible end; gtSeduction: begin gear^.Radius:= 250; diff -r 0463f747e839 -r 167dea42d7d7 hedgewars/uGearsUtils.pas --- a/hedgewars/uGearsUtils.pas Sun Sep 29 19:03:15 2013 -0400 +++ b/hedgewars/uGearsUtils.pas Mon Sep 30 12:37:44 2013 -0400 @@ -489,7 +489,7 @@ end else begin - if Gear^.Kind = gtHedgehog then Gear^.State:= Gear^.State and not gstSubmersible; + if not (Gear^.Kind in [gtJetpack, gtBee]) then Gear^.State:= Gear^.State and not gstSubmersible; // making it temporary for most gears is more attractive I think CheckGearDrowning := false end end; @@ -1224,26 +1224,26 @@ // for playing around since it isn't hooked up yet //WorldEdge:= weBounce; if WorldEdge = weNone then exit(false); -if (hwRound(Gear^.X)-Gear^.Radius < leftX) or - (hwRound(Gear^.X)+Gear^.Radius > rightX) then +if (hwRound(Gear^.X)-Gear^.Radius < (leftX-100)) or + (hwRound(Gear^.X)+Gear^.Radius > (rightX+100)) then begin if WorldEdge = weWrap then begin - if (hwRound(Gear^.X)-Gear^.Radius < leftX) then - Gear^.X:= int2hwfloat(rightX-Gear^.Radius) - else Gear^.X:= int2hwfloat(leftX+Gear^.Radius) + if (hwRound(Gear^.X)-Gear^.Radius < leftX-100) then + Gear^.X:= int2hwfloat(rightX-Gear^.Radius+100) + else Gear^.X:= int2hwfloat(leftX+Gear^.Radius-100) end else if WorldEdge = weBounce then begin if (hwRound(Gear^.X)-Gear^.Radius < leftX) then begin Gear^.dX.isNegative:= false; - Gear^.X:= int2hwfloat(leftX+Gear^.Radius) + Gear^.X:= int2hwfloat(leftX+Gear^.Radius-100) end else begin Gear^.dX.isNegative:= true; - Gear^.X:= int2hwfloat(rightX-Gear^.Radius) + Gear^.X:= int2hwfloat(rightX-Gear^.Radius+100) end end else if WorldEdge = weSea then diff -r 0463f747e839 -r 167dea42d7d7 hedgewars/uWorld.pas --- a/hedgewars/uWorld.pas Sun Sep 29 19:03:15 2013 -0400 +++ b/hedgewars/uWorld.pas Mon Sep 30 12:37:44 2013 -0400 @@ -1238,8 +1238,8 @@ if WorldEdge <> weNone then begin (* I think for a bounded world, will fill the left and right areas with black or something. Also will probably want various border effects/animations based on border type. Prob also, say, trigger a border animation timer on an impact. *) - DrawLine(leftX, -3000, leftX, cWaterLine+cVisibleWater, 3.0, $FF, $00, $FF, $FF); - DrawLine(rightX, -3000, rightX, cWaterLine+cVisibleWater, 3.0, $FF, $00, $FF, $FF) + DrawLine(leftX-100, -3000, leftX-100, cWaterLine+cVisibleWater, 3.0, $FF, $00, $FF, $FF); + DrawLine(rightX+100, -3000, rightX+100, cWaterLine+cVisibleWater, 3.0, $FF, $00, $FF, $FF) end; // this scale is used to keep the various widgets at the same dimension at all zoom levels