# HG changeset patch # User Wuzzy # Date 1531238404 -7200 # Node ID f1d349a52bc703326ceae0c3991c61ee444a2c16 # Parent 4c47a480009b4a5f27ad5c4472ed8325ae621870 Refactor: lfCurrentHog→lfCurHogCrate, lfNotCurrentMask→lfNotCurHogCrate diff -r 4c47a480009b -r f1d349a52bc7 ChangeLog.txt --- a/ChangeLog.txt Tue Jul 10 17:11:31 2018 +0200 +++ b/ChangeLog.txt Tue Jul 10 18:00:04 2018 +0200 @@ -41,6 +41,7 @@ + New call: GetAmmo(ammoType): Returns ammo configuration (corresponds to SetAmmo) + New parameter: SetAmmoTexts: 5th param. showExtra: Set to false to hide texts like “Not yet available” + New parameter: ShowMission: 6th param. forceDisplay: Set to true to prevent this particular mission panel to be hidden manually by player + * Changed global: lfCurrentHog becomes lfCurHogCrate * Fixed variable: TotalRounds was -1 (instead of 0) in first real round after hog placement phase ====================== 0.9.24.1 ==================== diff -r 4c47a480009b -r f1d349a52bc7 hedgewars/uAIAmmoTests.pas --- a/hedgewars/uAIAmmoTests.pas Tue Jul 10 17:11:31 2018 +0200 +++ b/hedgewars/uAIAmmoTests.pas Tue Jul 10 18:00:04 2018 +0200 @@ -1309,7 +1309,7 @@ //FillChar(cake, sizeof(cake), 0); cake.Radius:= 7; - cake.CollisionMask:= lfNotCurrentMask; + cake.CollisionMask:= lfNotCurHogCrate; cake.Hedgehog:= Me^.Hedgehog; // check left direction diff -r 4c47a480009b -r f1d349a52bc7 hedgewars/uAIMisc.pas --- a/hedgewars/uAIMisc.pas Tue Jul 10 17:11:31 2018 +0200 +++ b/hedgewars/uAIMisc.pas Tue Jul 10 18:00:04 2018 +0200 @@ -372,10 +372,10 @@ if not CheckBounds(x, y, r) then exit(false); - if (Land[y-r, x-r] and lfNotCurrentMask <> 0) or - (Land[y+r, x-r] and lfNotCurrentMask <> 0) or - (Land[y+r, x-r] and lfNotCurrentMask <> 0) or - (Land[y+r, x+r] and lfNotCurrentMask <> 0) then + if (Land[y-r, x-r] and lfNotCurHogCrate <> 0) or + (Land[y+r, x-r] and lfNotCurHogCrate <> 0) or + (Land[y+r, x-r] and lfNotCurHogCrate <> 0) or + (Land[y+r, x+r] and lfNotCurHogCrate <> 0) then exit(true); TestColl:= false; @@ -927,7 +927,7 @@ var pX, pY, tY: LongInt; begin HHGo:= false; -Gear^.CollisionMask:= lfNotCurrentMask; +Gear^.CollisionMask:= lfNotCurHogCrate; AltGear^:= Gear^; GoInfo.Ticks:= 0; diff -r 4c47a480009b -r f1d349a52bc7 hedgewars/uCollisions.pas --- a/hedgewars/uCollisions.pas Tue Jul 10 17:11:31 2018 +0200 +++ b/hedgewars/uCollisions.pas Tue Jul 10 18:00:04 2018 +0200 @@ -341,7 +341,7 @@ var x, y, i: LongInt; begin // Special case to emulate the old intersect gear clearing, but with a bit of slop for pixel overlap -if (Gear^.CollisionMask = lfNotCurrentMask) and (Gear^.Kind <> gtHedgehog) and (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.Gear <> nil) and +if (Gear^.CollisionMask = lfNotCurHogCrate) and (Gear^.Kind <> gtHedgehog) and (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.Gear <> nil) and ((hwRound(Gear^.Hedgehog^.Gear^.X) + Gear^.Hedgehog^.Gear^.Radius + 16 < hwRound(Gear^.X) - Gear^.Radius) or (hwRound(Gear^.Hedgehog^.Gear^.X) - Gear^.Hedgehog^.Gear^.Radius - 16 > hwRound(Gear^.X) + Gear^.Radius)) then Gear^.CollisionMask:= $FFFF; @@ -370,7 +370,7 @@ var x, y, i: LongInt; begin // Special case to emulate the old intersect gear clearing, but with a bit of slop for pixel overlap -if (Gear^.CollisionMask = lfNotCurrentMask) and (Gear^.Kind <> gtHedgehog) and (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.Gear <> nil) and +if (Gear^.CollisionMask = lfNotCurHogCrate) and (Gear^.Kind <> gtHedgehog) and (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.Gear <> nil) and ((hwRound(Gear^.Hedgehog^.Gear^.Y) + Gear^.Hedgehog^.Gear^.Radius + 16 < hwRound(Gear^.Y) - Gear^.Radius) or (hwRound(Gear^.Hedgehog^.Gear^.Y) - Gear^.Hedgehog^.Gear^.Radius - 16 > hwRound(Gear^.Y) + Gear^.Radius)) then Gear^.CollisionMask:= $FFFF; diff -r 4c47a480009b -r f1d349a52bc7 hedgewars/uConsts.pas --- a/hedgewars/uConsts.pas Tue Jul 10 17:11:31 2018 +0200 +++ b/hedgewars/uConsts.pas Tue Jul 10 18:00:04 2018 +0200 @@ -120,8 +120,8 @@ lfBouncy = $0400; // green lfLandMask = $FF00; // upper byte is used for terrain, not objects. - lfCurrentHog = $0080; // CurrentHog. It is also used to flag crates, for convenience of AI. Since an active hog would instantly collect the crate, this does not impact play - lfNotCurrentMask = $FF7F; // inverse of above. frequently used + lfCurHogCrate = $0080; // CurrentHedgehog, and crates, for convenience of AI. Since an active hog would instantly collect the crate, this does not impact playj + lfNotCurHogCrate = $FF7F; // inverse of above. frequently used lfObjMask = $007F; // lower 7 bits used for hogs and explosives and mines lfNotObjMask = $FF80; // inverse of above. @@ -136,7 +136,7 @@ // lower byte is for objects. // consists of 0-127 counted for object checkins and $80 as a bit flag for current hog. - lfAllObjMask = $00FF; // lfCurrentHog or lfObjMask + lfAllObjMask = $00FF; // lfCurHogCrate or lfObjMask diff -r 4c47a480009b -r f1d349a52bc7 hedgewars/uGearsHandlersMess.pas --- a/hedgewars/uGearsHandlersMess.pas Tue Jul 10 17:11:31 2018 +0200 +++ b/hedgewars/uGearsHandlersMess.pas Tue Jul 10 18:00:04 2018 +0200 @@ -3635,7 +3635,7 @@ begin AllInactive := false; - Gear^.CollisionMask:= lfNotCurrentMask; + Gear^.CollisionMask:= lfNotCurHogCrate; Gear^.dY:= cMaxWindSpeed * 100; @@ -3956,7 +3956,7 @@ ry := rndSign(getRandomf * _0_1); ball:= AddGear(gx, gy, gtBall, 0, SignAs(AngleSin(HHGear^.Angle) * _0_8, HHGear^.dX) + rx, AngleCos(HHGear^.Angle) * ( - _0_8) + ry, 0); - ball^.CollisionMask:= lfNotCurrentMask; + ball^.CollisionMask:= lfNotCurHogCrate; PlaySound(sndGun); end; @@ -5442,7 +5442,7 @@ flame:= AddGear(gx, gy, gtFlame, gstTmpFlag, SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx, AngleCos(HHGear^.Angle) * ( - speed) + ry, 0); - flame^.CollisionMask:= lfNotCurrentMask; + flame^.CollisionMask:= lfNotCurHogCrate; //flame^.FlightTime:= 500; use the default huge value to avoid sticky flame suddenly being damaging as opposed to other flames if (Gear^.Health mod 30) = 0 then @@ -5450,7 +5450,7 @@ flame:= AddGear(gx, gy, gtFlame, 0, SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx, AngleCos(HHGear^.Angle) * ( - speed) + ry, 0); - flame^.CollisionMask:= lfNotCurrentMask; + flame^.CollisionMask:= lfNotCurHogCrate; //flame^.FlightTime:= 500; end end; @@ -5534,7 +5534,7 @@ land:= AddGear(gx, gy, gtFlake, gstTmpFlag, SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx, AngleCos(HHGear^.Angle) * ( - speed) + ry, 0); - land^.CollisionMask:= lfNotCurrentMask; + land^.CollisionMask:= lfNotCurHogCrate; Gear^.Timer:= Gear^.Tag end; @@ -6851,7 +6851,7 @@ ry := rndSign(getRandomf * _0_2); bullet:= AddGear(gx, gy, gtMinigunBullet, 0, SignAs(AngleSin(HHGear^.Angle) * _0_8, HHGear^.dX) + rx, AngleCos(HHGear^.Angle) * ( - _0_8) + ry, 0); - bullet^.CollisionMask:= lfNotCurrentMask; + bullet^.CollisionMask:= lfNotCurHogCrate; bullet^.WDTimer := Gear^.WDTimer; Inc(Gear^.WDTimer); diff -r 4c47a480009b -r f1d349a52bc7 hedgewars/uGearsHandlersRope.pas --- a/hedgewars/uGearsHandlersRope.pas Tue Jul 10 17:11:31 2018 +0200 +++ b/hedgewars/uGearsHandlersRope.pas Tue Jul 10 18:00:04 2018 +0200 @@ -497,7 +497,7 @@ end; if Gear^.Elasticity < _20 then Gear^.CollisionMask:= lfLandMask - else Gear^.CollisionMask:= lfNotCurrentMask; //lfNotObjMask or lfNotHHObjMask; + else Gear^.CollisionMask:= lfNotCurHogCrate; //lfNotObjMask or lfNotHHObjMask; CheckCollision(Gear); if (Gear^.State and gstCollision) <> 0 then diff -r 4c47a480009b -r f1d349a52bc7 hedgewars/uGearsHedgehog.pas --- a/hedgewars/uGearsHedgehog.pas Tue Jul 10 17:11:31 2018 +0200 +++ b/hedgewars/uGearsHedgehog.pas Tue Jul 10 18:00:04 2018 +0200 @@ -493,7 +493,7 @@ newGear^.Target.X:= TargetPoint.X; newGear^.Target.Y:= TargetPoint.Y end; - if (newGear <> nil) and (newGear^.CollisionMask and lfCurrentHog <> 0) then newGear^.CollisionMask:= newGear^.CollisionMask and (not lfCurrentHog); + if (newGear <> nil) and (newGear^.CollisionMask and lfCurHogCrate <> 0) then newGear^.CollisionMask:= newGear^.CollisionMask and (not lfCurHogCrate); // Clear FollowGear if using on a rope/parachute/saucer etc so focus stays with the hog's movement if altUse then diff -r 4c47a480009b -r f1d349a52bc7 hedgewars/uGearsList.pas --- a/hedgewars/uGearsList.pas Tue Jul 10 17:11:31 2018 +0200 +++ b/hedgewars/uGearsList.pas Tue Jul 10 18:00:04 2018 +0200 @@ -212,7 +212,7 @@ begin gear^.Hedgehog:= CurrentHedgehog; if (CurrentHedgehog^.Gear <> nil) and (hwRound(CurrentHedgehog^.Gear^.X) = X) and (hwRound(CurrentHedgehog^.Gear^.Y) = Y) then - gear^.CollisionMask:= lfNotCurrentMask + gear^.CollisionMask:= lfNotCurHogCrate end; if (Ammoz[Gear^.AmmoType].Ammo.Propz and ammoprop_NeedTarget <> 0) then @@ -414,7 +414,7 @@ RopePoints.Count:= 0; gear^.Tint:= $D8D8D8FF; gear^.Tag:= 0; // normal rope render - gear^.CollisionMask:= lfNotCurrentMask //lfNotObjMask or lfNotHHObjMask; + gear^.CollisionMask:= lfNotCurHogCrate //lfNotObjMask or lfNotHHObjMask; end; gtMine: begin gear^.ImpactSound:= sndMineImpact; diff -r 4c47a480009b -r f1d349a52bc7 hedgewars/uLandGraphics.pas --- a/hedgewars/uLandGraphics.pas Tue Jul 10 17:11:31 2018 +0200 +++ b/hedgewars/uLandGraphics.pas Tue Jul 10 18:00:04 2018 +0200 @@ -236,12 +236,12 @@ setCurrentHog: for i:= fromPix to toPix do begin - Land[y, i]:= Land[y, i] or lfCurrentHog + Land[y, i]:= Land[y, i] or lfCurHogCrate end; removeCurrentHog: for i:= fromPix to toPix do begin - Land[y, i]:= Land[y, i] and lfNotCurrentMask; + Land[y, i]:= Land[y, i] and lfNotCurHogCrate; end; end; end; diff -r 4c47a480009b -r f1d349a52bc7 hedgewars/uScript.pas --- a/hedgewars/uScript.pas Tue Jul 10 17:11:31 2018 +0200 +++ b/hedgewars/uScript.pas Tue Jul 10 18:00:04 2018 +0200 @@ -3926,7 +3926,7 @@ ScriptSetInteger('lfBouncy' , lfBouncy); ScriptSetInteger('lfLandMask' , lfLandMask); -ScriptSetInteger('lfCurrentHog' , lfCurrentHog); +ScriptSetInteger('lfCurHogCrate' , lfCurHogCrate); ScriptSetInteger('lfHHMask' , lfHHMask); ScriptSetInteger('lfNotHHObjMask' , lfNotHHObjMask); ScriptSetInteger('lfAllObjMask' , lfAllObjMask);