--- a/hedgewars/GSHandlers.inc Sun Nov 27 00:57:43 2011 +0100
+++ b/hedgewars/GSHandlers.inc Sun Nov 27 14:46:57 2011 +0300
@@ -84,7 +84,7 @@
if (gi^.Kind = gtHedgehog) then
begin
d := r - hwRound(Distance(gi^.X - x, gi^.Y - y));
- if (d > 1) and not gi^.Invulnerable and (GetRandom(2) = 0) then
+ if (d > 1) and (not gi^.Invulnerable) and (GetRandom(2) = 0) then
begin
if (CurrentHedgehog^.Gear = gi) then
PlaySound(sndOops, gi^.Hedgehog^.Team^.voicepack)
@@ -114,8 +114,8 @@
begin
Z := cHHZ;
Active := false;
- State:= State and not (gstHHDriven or gstAttacking or gstAttacked);
- Message := Message and not gmAttack;
+ State:= State and (not (gstHHDriven or gstAttacking or gstAttacked));
+ Message := Message and (not gmAttack);
end;
HH^.GearHidden:= HH^.Gear;
HH^.Gear:= nil
@@ -126,7 +126,7 @@
HH^.Gear:=HH^.GearHidden;
HH^.GearHidden:= nil;
InsertGearToList(HH^.Gear);
-HH^.Gear^.State:= (HH^.Gear^.State and not (gstHHDriven or gstInvisible or gstAttacking)) or gstAttacked;
+HH^.Gear^.State:= (HH^.Gear^.State and (not (gstHHDriven or gstInvisible or gstAttacking))) or gstAttacked;
AddGearCI(HH^.Gear);
HH^.Gear^.Active:= true;
ScriptCall('onHogRestore', HH^.Gear^.Uid)
@@ -221,7 +221,7 @@
begin
if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) or (TestCollisionYwithGear(Gear, hwSign(Gear^.dY)) <> 0) then
Gear^.State := Gear^.State or gstCollision
- else Gear^.State := Gear^.State and not gstCollision
+ else Gear^.State := Gear^.State and (not gstCollision)
end;
procedure CheckCollisionWithLand(Gear: PGear); inline;
@@ -229,7 +229,7 @@
if TestCollisionX(Gear, hwSign(Gear^.dX)) or TestCollisionY(Gear, hwSign(Gear^.dY)
)
then Gear^.State := Gear^.State or gstCollision
- else Gear^.State := Gear^.State and not gstCollision
+ else Gear^.State := Gear^.State and (not gstCollision)
end;
procedure CheckHHDamage(Gear: PGear);
@@ -307,7 +307,7 @@
// clip velocity at 1.9 - over 1 per pixel, but really shouldn't cause many actual problems.
if Gear^.dX.QWordValue > 8160437862 then Gear^.dX.QWordValue:= 8160437862;
if Gear^.dY.QWordValue > 8160437862 then Gear^.dY.QWordValue:= 8160437862;
- Gear^.State := Gear^.State and not gstCollision;
+ Gear^.State := Gear^.State and (not gstCollision);
collV := 0;
collH := 0;
tdX := Gear^.dX;
@@ -348,7 +348,7 @@
else
begin
isFalling := true;
- if (Gear^.AdvBounce=1) and not Gear^.dY.isNegative and (TestCollisionYwithGear(Gear, -1) <> 0) then
+ if (Gear^.AdvBounce=1) and (not Gear^.dY.isNegative) and (TestCollisionYwithGear(Gear, -1) <> 0) then
collV := -1
end
end;
@@ -390,7 +390,7 @@
//if (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) < _0_0002) and
if ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) < _0_02.QWordValue) and
(not isFalling) then
- Gear^.State := Gear^.State and not gstMoving
+ Gear^.State := Gear^.State and (not gstMoving)
else
Gear^.State := Gear^.State or gstMoving;
@@ -667,7 +667,7 @@
draw:= false;
if gun then
begin
- Gear^.State:= Gear^.State and not gstInvisible;
+ Gear^.State:= Gear^.State and (not gstInvisible);
doStepFallingGear(Gear);
CheckCollision(Gear);
if ((Gear^.State and gstCollision) <> 0) or ((Gear^.State and gstMoving) = 0) then draw:= true;
@@ -678,7 +678,7 @@
begin
with Gear^ do
begin
- State:= State and not gstInvisible;
+ State:= State and (not gstInvisible);
X:= X + cWindSpeed * 3200 + dX;
Y:= Y + dY + cGravity * vobFallSpeed * 8; // using same value as flakes to try and get similar results
xx:= hwRound(X);
@@ -775,7 +775,7 @@
end
else Land[ly, lx]:= lf;
if gun then
- LandPixels[ry, rx]:= (cExplosionBorderColor and not AMask) or (p^[px] and AMask)
+ LandPixels[ry, rx]:= (cExplosionBorderColor and (not AMask)) or (p^[px] and AMask)
else LandPixels[ry, rx]:= addBgColor(LandPixels[ry, rx], p^[px]);
end
else allpx:= false
@@ -950,8 +950,8 @@
dec(Gear^.Timer);
if Gear^.Timer = 0 then
begin
- Gear^.Hedgehog^.Gear^.Message:= Gear^.Hedgehog^.Gear^.Message and not gmAttack;
- Gear^.Hedgehog^.Gear^.State:= Gear^.Hedgehog^.Gear^.State and not gstAttacking;
+ Gear^.Hedgehog^.Gear^.Message:= Gear^.Hedgehog^.Gear^.Message and (not gmAttack);
+ Gear^.Hedgehog^.Gear^.State:= Gear^.Hedgehog^.Gear^.State and (not gstAttacking);
AttackBar:= 0;
Gear^.SoundChannel := LoopSound(sndBee);
@@ -1268,7 +1268,7 @@
begin
HHGear^.State := HHGear^.State or gstNoDamage;
doMakeExplosion(x, y + 7, 6, Gear^.Hedgehog, EXPLDontDraw);
- HHGear^.State := HHGear^.State and not gstNoDamage
+ HHGear^.State := HHGear^.State and (not gstNoDamage)
end;
if (Gear^.Timer mod 47) = 0 then
@@ -1398,7 +1398,7 @@
if ((HHGear^.State and gstMoving) = 0) then
begin
- HHGear^.State := HHGear^.State and not gstAttacking;
+ HHGear^.State := HHGear^.State and (not gstAttacking);
prevX := hwRound(HHGear^.X);
// why the call to HedgehogStep then a further increment of X?
@@ -1425,7 +1425,7 @@
end;
HHGear^.State := HHGear^.State or gstNoDamage;
AmmoShove(Gear, 2, 15);
- HHGear^.State := HHGear^.State and not gstNoDamage
+ HHGear^.State := HHGear^.State and (not gstNoDamage)
end;
end;
@@ -1500,7 +1500,7 @@
Gear^.dY := -AngleCos(HHGear^.Angle);
Gear^.Friction := _450 * _0_01 * cRopePercent;
Gear^.Elasticity := _0;
- Gear^.State := Gear^.State and not gsttmpflag;
+ Gear^.State := Gear^.State and (not gsttmpflag);
Gear^.doStep := @doStepRope;
end
end;
@@ -1517,8 +1517,8 @@
begin
with HHGear^ do
begin
- Message := Message and not gmAttack;
- State := (State or gstMoving) and not gstWinner;
+ Message := Message and (not gmAttack);
+ State := (State or gstMoving) and (not gstWinner);
end;
DeleteGear(Gear)
end;
@@ -1527,7 +1527,7 @@
begin
with HHGear^ do
begin
- Message := Message and not gmAttack;
+ Message := Message and (not gmAttack);
State := State or gstMoving;
end;
RopePoints.Count := 0;
@@ -1546,10 +1546,10 @@
exit
end;
- if (Gear^.Message and gmLeft <> 0) and not TestCollisionXwithGear(HHGear, -1) then
+ if (Gear^.Message and gmLeft <> 0) and (not TestCollisionXwithGear(HHGear, -1)) then
HHGear^.dX := HHGear^.dX - _0_0002;
- if (Gear^.Message and gmRight <> 0) and not TestCollisionXwithGear(HHGear, 1) then
+ if (Gear^.Message and gmRight <> 0) and (not TestCollisionXwithGear(HHGear, 1)) then
HHGear^.dX := HHGear^.dX + _0_0002;
// vector between hedgehog and rope attaching point
@@ -1801,7 +1801,7 @@
begin
CheckHHDamage(HHGear);
HHGear^.dY := _0
- //HHGear^.State:= HHGear^.State and not (gstHHJumping or gstHHHJump);
+ //HHGear^.State:= HHGear^.State and (not (gstHHJumping or gstHHHJump));
end
else
begin
@@ -1825,8 +1825,8 @@
PlaySound(sndRopeAttach);
with HHGear^ do
begin
- State := State and not (gstAttacking or gstHHJumping or gstHHHJump);
- Message := Message and not gmAttack
+ State := State and (not (gstAttacking or gstHHJumping or gstHHHJump));
+ Message := Message and (not gmAttack)
end;
RemoveFromAmmo;
@@ -1851,8 +1851,8 @@
PlaySound(sndRopeAttach);
with HHGear^ do
begin
- State := State and not (gstAttacking or gstHHJumping or gstHHHJump);
- Message := Message and not gmAttack
+ State := State and (not (gstAttacking or gstHHJumping or gstHHHJump));
+ Message := Message and (not gmAttack)
end;
RemoveFromAmmo;
@@ -1867,8 +1867,8 @@
begin
with Gear^.Hedgehog^.Gear^ do
begin
- State := State and not gstAttacking;
- Message := Message and not gmAttack
+ State := State and (not gstAttacking);
+ Message := Message and (not gmAttack)
end;
DeleteGear(Gear)
end;
@@ -1955,7 +1955,7 @@
PlaySound(sndVaporize);
Gear^.Health := 0;
Gear^.Damage := 0;
- Gear^.State := Gear^.State and not gstAttacking
+ Gear^.State := Gear^.State and (not gstAttacking)
end;
exit
end;
@@ -2128,7 +2128,7 @@
SetAllToActive;
// something (hh, mine, etc...) could be on top of the case
with CurrentHedgehog^ do
- if Gear <> nil then Gear^.Message := Gear^.Message and not (gmLJump or gmHJump);
+ if Gear <> nil then Gear^.Message := Gear^.Message and (not (gmLJump or gmHJump));
exit
end;
@@ -2441,7 +2441,7 @@
HHGear^.State := HHGear^.State or gstNoDamage;
Gear^.Y := HHGear^.Y;
AmmoShove(Gear, 30, 40);
- HHGear^.State := HHGear^.State and not gstNoDamage
+ HHGear^.State := HHGear^.State and (not gstNoDamage)
end;
HHGear^.dY := HHGear^.dY + cGravity;
@@ -2532,8 +2532,8 @@
AfterAttack;
- HHGear^.State := HHGear^.State and not (gstAttacking or gstAttacked or gstMoving);
- HHGear^.Message := HHGear^.Message and not gmAttack;
+ HHGear^.State := HHGear^.State and (not (gstAttacking or gstAttacked or gstMoving));
+ HHGear^.Message := HHGear^.Message and (not gmAttack);
Gear^.doStep := @doStepParachuteWork;
@@ -2642,13 +2642,13 @@
y := HHGear^.Y;
if (Distance(tx - x, ty - y) > _256) or
- not TryPlaceOnLand(Gear^.Target.X - SpritesData[sprAmGirder].Width div 2,
+ (not TryPlaceOnLand(Gear^.Target.X - SpritesData[sprAmGirder].Width div 2,
Gear^.Target.Y - SpritesData[sprAmGirder].Height div 2,
- sprAmGirder, Gear^.State, true, false) then
+ sprAmGirder, Gear^.State, true, false)) then
begin
PlaySound(sndDenied);
- HHGear^.Message := HHGear^.Message and not gmAttack;
- HHGear^.State := HHGear^.State and not gstAttacking;
+ HHGear^.Message := HHGear^.Message and (not gmAttack);
+ HHGear^.State := HHGear^.State and (not gstAttacking);
HHGear^.State := HHGear^.State or gstHHChooseTarget;
isCursorVisible := true;
DeleteGear(Gear)
@@ -2660,8 +2660,8 @@
AfterAttack;
end;
- HHGear^.State := HHGear^.State and not (gstAttacking or gstAttacked);
- HHGear^.Message := HHGear^.Message and not gmAttack;
+ HHGear^.State := HHGear^.State and (not (gstAttacking or gstAttacked));
+ HHGear^.Message := HHGear^.Message and (not gmAttack);
end;
////////////////////////////////////////////////////////////////////////////////
@@ -2706,8 +2706,8 @@
Gear^.Target.Y - SpritesData[sprHHTelepMask].Height div 2,
sprHHTelepMask, 0, false, false) then
begin
- HHGear^.Message := HHGear^.Message and not gmAttack;
- HHGear^.State := HHGear^.State and not gstAttacking;
+ HHGear^.Message := HHGear^.Message and (not gmAttack);
+ HHGear^.State := HHGear^.State and (not gstAttacking);
HHGear^.State := HHGear^.State or gstHHChooseTarget;
DeleteGear(Gear);
isCursorVisible := true;
@@ -2741,10 +2741,10 @@
begin
AllInactive := false;
- if ((Gear^.Message and not gmSwitch) <> 0) or (TurnTimeLeft = 0) then
+ if ((Gear^.Message and (not gmSwitch)) <> 0) or (TurnTimeLeft = 0) then
begin
HHGear := Gear^.Hedgehog^.Gear;
- Msg := Gear^.Message and not gmSwitch;
+ Msg := Gear^.Message and (not gmSwitch);
DeleteGear(Gear);
ApplyAmmoChanges(HHGear^.Hedgehog^);
@@ -2757,8 +2757,8 @@
if (Gear^.Message and gmSwitch) <> 0 then
begin
HHGear := CurrentHedgehog^.Gear;
- HHGear^.Message := HHGear^.Message and not gmSwitch;
- Gear^.Message := Gear^.Message and not gmSwitch;
+ HHGear^.Message := HHGear^.Message and (not gmSwitch);
+ Gear^.Message := Gear^.Message and (not gmSwitch);
State := HHGear^.State;
HHGear^.State := 0;
HHGear^.Active := false;
@@ -2797,8 +2797,8 @@
OnUsedAmmo(HHGear^.Hedgehog^);
with HHGear^ do
begin
- State := State and not gstAttacking;
- Message := Message and not gmAttack
+ State := State and (not gstAttacking);
+ Message := Message and (not gmAttack)
end
end;
@@ -3299,9 +3299,9 @@
if (Gear^.Timer = 0) or (t^.Count <> 0) or
( ((Gear^.State and gsttmpFlag) = 0) and
(TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) = 0)
- and not TestCollisionXWithGear(Gear, hwSign(Gear^.dX)))
+ and (not TestCollisionXWithGear(Gear, hwSign(Gear^.dX))))
// CheckLandValue returns true if the type isn't matched
- or not CheckLandValue(hwRound(Gear^.X), hwRound(Gear^.Y), lfIndestructible) then
+ or (not CheckLandValue(hwRound(Gear^.X), hwRound(Gear^.Y), lfIndestructible)) then
begin
//out of time or exited ground
StopSound(Gear^.SoundChannel);
@@ -3312,7 +3312,7 @@
DeleteGear(Gear);
exit
end
- else if (TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) = 0) and not TestCollisionXWithGear(Gear, hwSign(Gear^.dX)) then
+ else if (TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) = 0) and (not TestCollisionXWithGear(Gear, hwSign(Gear^.dX))) then
begin
StopSound(Gear^.SoundChannel);
Gear^.Tag := 1;
@@ -3422,7 +3422,7 @@
HHGear: PGear;
begin
HHGear := Gear^.Hedgehog^.Gear;
- HHGear^.Message := HHGear^.Message and not (gmUp or gmDown);
+ HHGear^.Message := HHGear^.Message and (not (gmUp or gmDown));
HHGear^.State := HHGear^.State or gstNotKickable;
Gear^.doStep := @doStepBallgunWork
end;
@@ -3493,7 +3493,7 @@
if ((HHGear^.Message and gmAttack) <> 0) and (Gear^.Health <> 0) then
begin
- HHGear^.Message := HHGear^.Message and not gmAttack;
+ HHGear^.Message := HHGear^.Message and (not gmAttack);
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtAirBomb, 0, Gear^.dX * _0_5, Gear^.dY *
_0_5, 0);
dec(Gear^.Health)
@@ -3542,7 +3542,7 @@
end;
HHGear^.Message := 0;
- ParseCommand('/taunt '#1, true)
+ ParseCommand('/taunt ' + #1, true)
end
end;
@@ -3647,9 +3647,9 @@
'%', cWhiteColor, fntSmall)
end;
- if HHGear^.Message and (gmAttack or gmUp or gmPrecise or gmLeft or gmRight) <> 0 then Gear^
- .State := Gear^.State and not gsttmpFlag;
- HHGear^.Message := HHGear^.Message and not (gmUp or gmPrecise or gmLeft or gmRight);
+ if HHGear^.Message and (gmAttack or gmUp or gmPrecise or gmLeft or gmRight) <> 0 then
+ Gear^.State := Gear^.State and (not gsttmpFlag);
+ HHGear^.Message := HHGear^.Message and (not (gmUp or gmPrecise or gmLeft or gmRight));
HHGear^.State := HHGear^.State or gstMoving;
Gear^.X := HHGear^.X;
@@ -3699,8 +3699,8 @@
AfterAttack;
with HHGear^ do
begin
- State := State and not gstAttacking;
- Message := Message and not (gmAttack or gmUp or gmPrecise or gmLeft or gmRight);
+ State := State and (not gstAttacking);
+ Message := Message and (not (gmAttack or gmUp or gmPrecise or gmLeft or gmRight));
if (dY < _0_1) and (dY > -_0_1) then
begin
Gear^.State := Gear^.State or gsttmpFlag;
@@ -3770,7 +3770,7 @@
if (HHGear^.Message and gmAttack <> 0) then
begin
- HHGear^.Message := HHGear^.Message and not gmAttack;
+ HHGear^.Message := HHGear^.Message and (not gmAttack);
if Gear^.FlightTime > 0 then
begin
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y) + 32, gtEgg, 0, Gear^.dX * _0_5, Gear^.dY, 0);
@@ -3780,8 +3780,8 @@
end;
if HHGear^.Message and (gmUp or gmPrecise or gmLeft or gmRight) <> 0 then
- Gear^.State := Gear^.State and not gsttmpFlag;
- HHGear^.Message := HHGear^.Message and not (gmUp or gmPrecise or gmLeft or gmRight);
+ Gear^.State := Gear^.State and (not gsttmpFlag);
+ HHGear^.Message := HHGear^.Message and (not (gmUp or gmPrecise or gmLeft or gmRight));
HHGear^.State := HHGear^.State or gstMoving;
Gear^.X := HHGear^.X;
@@ -3833,7 +3833,7 @@
exit
end;
HHGear := Gear^.Hedgehog^.Gear;
- HHGear^.Message := HHGear^.Message and not (gmUp or gmPrecise or gmLeft or gmRight);
+ HHGear^.Message := HHGear^.Message and (not (gmUp or gmPrecise or gmLeft or gmRight));
if abs(hwRound(HHGear^.Y - Gear^.Y)) > 32 then
begin
if Gear^.Timer = 0 then
@@ -3856,7 +3856,7 @@
Gear^.Timer := 500;
Gear^.dX := _0;
Gear^.dY := _0;
- Gear^.State := Gear^.State and not gstAnimation;
+ Gear^.State := Gear^.State and (not gstAnimation);
Gear^.doStep := @doStepBirdyDescend;
end
end;
@@ -3865,7 +3865,7 @@
var
HHGear: PGear;
begin
- gear^.State := gear^.State or gstAnimation and not gstTmpFlag;
+ gear^.State := gear^.State or gstAnimation and (not gstTmpFlag);
Gear^.doStep := @doStepBirdyAppear;
if CurrentHedgehog = nil then
begin
@@ -3884,8 +3884,8 @@
FollowGear := HHGear;
with HHGear^ do
begin
- State := State and not gstAttacking;
- Message := Message and not (gmAttack or gmUp or gmPrecise or gmLeft or gmRight)
+ State := State and (not gstAttacking);
+ Message := Message and (not (gmAttack or gmUp or gmPrecise or gmLeft or gmRight))
end
end;
@@ -3928,10 +3928,10 @@
if (CurrentHedgehog <> nil)
and (CurrentHedgehog^.Gear <> nil)
and ((CurrentHedgehog^.Gear^.Message and gmSwitch) <> 0) then
- With CurrentHedgehog^ do
+ with CurrentHedgehog^ do
if (CurAmmoType = amPortalGun) then
begin
- CurrentHedgehog^.Gear^.Message := CurrentHedgehog^.Gear^.Message and not gmSwitch;
+ CurrentHedgehog^.Gear^.Message := CurrentHedgehog^.Gear^.Message and (not gmSwitch);
CurWeapon:= GetAmmoEntry(CurrentHedgehog^);
if CurWeapon^.Pos <> 0 then
@@ -4084,7 +4084,7 @@
continue;
// only port bullets close to the portal
- if isBullet and not (hwAbs(poffs) < _3) then
+ if isBullet and (not (hwAbs(poffs) < _3)) then
continue;
//
@@ -4174,7 +4174,7 @@
iterator^.X := conPortal^.X + poffs * conPortal^.dX + noffs * nx;
iterator^.Y := conPortal^.Y + poffs * conPortal^.dY + noffs * ny;
- if not hasdxy and not (conPortal^.dY.isNegative) then
+ if not hasdxy and (not (conPortal^.dY.isNegative)) then
begin
iterator^.dY:= iterator^.dY + hwAbs(cGravity * (iterator^.Y - conPortal^.Y))
end;
@@ -4229,7 +4229,7 @@
else
begin
inc(iterator^.PortalCounter);
- iterator^.State:= iterator^.State and not gstHHHJump
+ iterator^.State:= iterator^.State and (not gstHHHJump)
end;
if not isbullet and (iterator^.Kind <> gtFlake) then
@@ -4303,7 +4303,7 @@
if ((y and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0) and (Land[y, x] > 255) then
begin
Gear^.State := Gear^.State or gstCollision;
- Gear^.State := Gear^.State and not gstMoving;
+ Gear^.State := Gear^.State and (not gstMoving);
if not CalcSlopeTangent(Gear, x, y, tx, ty, 255)
or (DistanceI(tx,ty) < _12) then // reject shots at too irregular terrain
begin
@@ -4370,7 +4370,7 @@
// let's save the HH's dX's direction so we can decide where the "top" of the portal hole
newPortal^.Elasticity.isNegative := CurrentHedgehog^.Gear^.dX.isNegative;
// when doing a backjump the dx is the opposite of the facing direction
- if ((Gear^.State and gstHHHJump) <> 0) and not cArtillery then
+ if ((Gear^.State and gstHHHJump) <> 0) and (not cArtillery) then
newPortal^.Elasticity.isNegative := not newPortal^.Elasticity.isNegative;
// make portal gun look unloaded
@@ -4399,7 +4399,7 @@
iterator := iterator^.NextGear
end;
end;
- newPortal^.State := newPortal^.State and not gstCollision;
+ newPortal^.State := newPortal^.State and (not gstCollision);
newPortal^.State := newPortal^.State or gstMoving;
newPortal^.doStep := @doStepMovingPortal;
end;
@@ -4427,7 +4427,7 @@
end;
AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtNote);
CurrentHedgehog^.Gear^.MsgParam := 0;
- CurrentHedgehog^.Gear^.Message := CurrentHedgehog^.Gear^.Message and not gmSlot;
+ CurrentHedgehog^.Gear^.Message := CurrentHedgehog^.Gear^.Message and (not gmSlot);
end;
if (*((Gear^.Pos = 3) and ((GameFlags and gfSolidLand) <> 0)) or*) (Gear^.Pos = 5) then
@@ -4698,7 +4698,7 @@
HHGear: PGear;
begin
HHGear := Gear^.Hedgehog^.Gear;
- HHGear^.Message := HHGear^.Message and not (gmUp or gmDown or gmLeft or gmRight);
+ HHGear^.Message := HHGear^.Message and (not (gmUp or gmDown or gmLeft or gmRight));
HHGear^.State := HHGear^.State or gstNotKickable;
Gear^.doStep := @doStepFlamethrowerWork
end;
@@ -4748,7 +4748,7 @@
if (Gear^.Health = 0) or (HHGear^.Damage <> 0) or ((HHGear^.Message and gmAttack) <> 0) then
begin
- HHGear^.Message:= HHGear^.Message and not gmAttack;
+ HHGear^.Message:= HHGear^.Message and (not gmAttack);
DeleteGear(Gear);
AfterAttack
end
@@ -4770,7 +4770,7 @@
HHGear: PGear;
begin
HHGear := Gear^.Hedgehog^.Gear;
- HHGear^.Message := HHGear^.Message and not (gmUp or gmDown or gmLeft or gmRight or gmAttack);
+ HHGear^.Message := HHGear^.Message and (not (gmUp or gmDown or gmLeft or gmRight or gmAttack));
HHGear^.State := HHGear^.State or gstNotKickable;
Gear^.doStep := @doStepLandGunWork
end;
@@ -4828,7 +4828,7 @@
end
end;
-HHGear^.State:= HHGear^.State and not gstNoDamage;
+HHGear^.State:= HHGear^.State and (not gstNoDamage);
Gear^.Timer:= 250;
Gear^.doStep:= @doStepIdle
end;
@@ -5075,7 +5075,7 @@
AddGearCI(Gear);
Gear^.dX:= _0;
Gear^.dY:= _0;
- Gear^.State:= Gear^.State and not gstMoving;
+ Gear^.State:= Gear^.State and (not gstMoving);
end;
if CurAmmoGear = Gear then
@@ -5090,7 +5090,7 @@
RemoveGearFromList(CurrentHedgehog^.Gear);
CurrentHedgehog^.Gear^.Z := cHHZ;
CurrentHedgehog^.Gear^.Active := false;
- CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State and not gstHHDriven;
+ CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State and (not gstHHDriven);
CurrentHedgehog^.GearHidden:= CurrentHedgehog^.Gear;
CurrentHedgehog^.Gear:= nil;
Gear^.Tag:= TotalRounds + Gear^.Tag;
@@ -5246,8 +5246,8 @@
begin
if HH^.Gear <> nil then
begin
- HH^.Gear^.Message := HH^.Gear^.Message and not gmAttack;
- HH^.Gear^.State:= HH^.Gear^.State and not gstAttacking;
+ HH^.Gear^.Message := HH^.Gear^.Message and (not gmAttack);
+ HH^.Gear^.State:= HH^.Gear^.State and (not gstAttacking);
end;
PlaySound(sndDenied);
DeleteGear(gear);
@@ -5264,8 +5264,8 @@
begin
if HH^.Gear <> nil then
begin
- HH^.Gear^.Message := HH^.Gear^.Message and not gmAttack;
- HH^.Gear^.State:= HH^.Gear^.State and not gstAttacking;
+ HH^.Gear^.Message := HH^.Gear^.Message and (not gmAttack);
+ HH^.Gear^.State:= HH^.Gear^.State and (not gstAttacking);
end;
PlaySound(sndDenied);
DeleteGear(gear);
--- a/hedgewars/HHHandlers.inc Sun Nov 27 00:57:43 2011 +0100
+++ b/hedgewars/HHHandlers.inc Sun Nov 27 14:46:57 2011 +0300
@@ -50,7 +50,7 @@
with HHGear^.Hedgehog^ do
begin
- HHGear^.Message:= HHGear^.Message and not gmSlot;
+ HHGear^.Message:= HHGear^.Message and (not gmSlot);
ammoidx:= 0;
if ((HHGear^.State and (gstAttacking or gstAttacked)) <> 0) or
((MultiShootAttacks > 0) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) = 0)) or
@@ -62,7 +62,7 @@
if ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) <> 0) and (MultiShootAttacks > 0) then OnUsedAmmo(HHGear^.Hedgehog^);
MultiShootAttacks:= 0;
- HHGear^.Message:= HHGear^.Message and not (gmLJump or gmHJump);
+ HHGear^.Message:= HHGear^.Message and (not (gmLJump or gmHJump));
if Ammoz[CurAmmoType].Slot = slot then
begin
@@ -110,7 +110,7 @@
t:= cMaxSlotAmmoIndex;
-HHGear^.Message:= HHGear^.Message and not gmWeapon;
+HHGear^.Message:= HHGear^.Message and (not gmWeapon);
with Hedgehog^ do
while (CurAmmoType <> weap) and (t >= 0) do
@@ -126,7 +126,7 @@
var CurWeapon: PAmmo;
color: LongWord;
begin
-Gear^.Message:= Gear^.Message and not gmTimer;
+Gear^.Message:= Gear^.Message and (not gmTimer);
CurWeapon:= GetAmmoEntry(Gear^.Hedgehog^);
with Gear^.Hedgehog^ do
if ((Gear^.Message and gmPrecise) <> 0) and ((CurWeapon^.Propz and ammoprop_SetBounce) <> 0) then
@@ -189,8 +189,8 @@
((TargetPoint.X <> NoPointX) or ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NeedTarget) = 0)) then
begin
State:= State or gstAttacking;
- if Power = cMaxPower then Message:= Message and not gmAttack
- else if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) = 0 then Message:= Message and not gmAttack
+ if Power = cMaxPower then Message:= Message and (not gmAttack)
+ else if (Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) = 0 then Message:= Message and (not gmAttack)
else begin
if Power = 0 then
begin
@@ -421,10 +421,10 @@
((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_Power) <> 0) then SendIPC('a');
AfterAttack;
end
- end else Message:= Message and not gmAttack;
+ end else Message:= Message and (not gmAttack);
end;
TargetPoint.X := NoPointX;
- ScriptCall('onHogAttack');
+ ScriptCall('onHogAttack');
end;
procedure AfterAttack;
@@ -435,7 +435,7 @@
CurrentHedgehog^ do
begin
a:= CurAmmoType;
- State:= State and not gstAttacking;
+ State:= State and (not gstAttacking);
if (Ammoz[a].Ammo.Propz and ammoprop_Effect) = 0 then
begin
Inc(MultiShootAttacks);
@@ -637,7 +637,7 @@
if ((Gear^.Message and gmLJump ) <> 0) then
begin
- Gear^.Message:= Gear^.Message and not gmLJump;
+ Gear^.Message:= Gear^.Message and (not gmLJump);
DeleteCI(Gear);
if TestCollisionYwithGear(Gear, -1) = 0 then
if not TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) then Gear^.Y:= Gear^.Y - _2 else
@@ -656,7 +656,7 @@
if ((Gear^.Message and gmHJump ) <> 0) then
begin
DeleteCI(Gear);
- Gear^.Message:= Gear^.Message and not gmHJump;
+ Gear^.Message:= Gear^.Message and (not gmHJump);
Gear^.dY:= -_0_2;
SetLittle(Gear^.dX);
@@ -770,7 +770,7 @@
begin
Gear^.dY:= _0;
Gear^.dX:= _0;
- Gear^.State:= Gear^.State and not gstMoving;
+ Gear^.State:= Gear^.State and (not gstMoving);
exit
end;
isFalling:= (Gear^.dY.isNegative) or not TestCollisionYKick(Gear, 1);
@@ -810,7 +810,7 @@
if ((Gear^.State and gstHHHJump) <> 0) and (not cArtillery) and
(Gear^.dX.QWordValue < _0_02.QWordValue) then Gear^.dX.isNegative:= not Gear^.dX.isNegative; // landing after high jump
- Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump);
+ Gear^.State:= Gear^.State and (not (gstHHJumping or gstHHHJump));
Gear^.dY:= _0;
end else Gear^.dY:= Gear^.dY + cGravity;
@@ -843,12 +843,12 @@
if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -5, hwSign(Gear^.dX)) then begin Gear^.X:= Gear^.X + Gear^.dX; Gear^.dX:= Gear^.dX * _0_84; Gear^.Y:= Gear^.Y - _5 end else
if hwAbs(Gear^.dX) > _0_02 then Gear^.dX:= -Gear^.Elasticity * Gear^.dX
else begin
- Gear^.State:= Gear^.State and not gstMoving;
+ Gear^.State:= Gear^.State and (not gstMoving);
while TestCollisionYWithGear(Gear,1) = 0 do Gear^.Y:= Gear^.Y+_1;
SetLittle(Gear^.dX)
end
else begin
- Gear^.State:= Gear^.State and not gstMoving;
+ Gear^.State:= Gear^.State and (not gstMoving);
while TestCollisionYWithGear(Gear,1) = 0 do Gear^.Y:= Gear^.Y+_1;
SetLittle(Gear^.dX)
end
@@ -860,8 +860,8 @@
if (not isFalling) and
(hwAbs(Gear^.dX) + hwAbs(Gear^.dY) < _0_03) then
begin
- Gear^.State:= Gear^.State and not gstWinner;
- Gear^.State:= Gear^.State and not gstMoving;
+ Gear^.State:= Gear^.State and (not gstWinner);
+ Gear^.State:= Gear^.State and (not gstMoving);
while TestCollisionYWithGear(Gear,1) = 0 do Gear^.Y:= Gear^.Y+_1;
SetLittle(Gear^.dX);
Gear^.dY:= _0
@@ -869,7 +869,7 @@
if (Gear^.State and gstMoving) <> 0 then
begin
- Gear^.State:= Gear^.State and not gstAnimation;
+ Gear^.State:= Gear^.State and (not gstAnimation);
// ARTILLERY but not being moved by explosions
Gear^.X:= Gear^.X + Gear^.dX;
Gear^.Y:= Gear^.Y + Gear^.dY;
@@ -923,10 +923,10 @@
if TagTurnTimeLeft = 0 then TagTurnTimeLeft:= TurnTimeLeft;
TurnTimeLeft:= 0;
isCursorVisible:= false;
- HHGear^.State:= HHGear^.State and not (gstHHDriven or gstAnimation or gstAttacking);
+ HHGear^.State:= HHGear^.State and (not (gstHHDriven or gstAnimation or gstAttacking));
AttackBar:= 0;
if HHGear^.Damage > 0 then
- HHGear^.State:= HHGear^.State and not (gstHHJumping or gstHHHJump);
+ HHGear^.State:= HHGear^.State and (not (gstHHJumping or gstHHHJump));
exit
end;
@@ -940,7 +940,7 @@
HHGear^.Timer:= 0;
inc(HHGear^.Pos);
if HHGear^.Pos = Wavez[TWave(HHGear^.Tag)].FramesCount then
- HHGear^.State:= HHGear^.State and not gstAnimation
+ HHGear^.State:= HHGear^.State and (not gstAnimation)
end;
exit
end;
@@ -971,7 +971,7 @@
and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) then
begin
Attack(HHGear);
- HHGear^.Message:= HHGear^.Message and not gmLJump
+ HHGear^.Message:= HHGear^.Message and (not gmLJump)
end;
if (CurAmmoGear = nil)
@@ -1010,7 +1010,7 @@
PlaySound(sndJump2, Hedgehog^.Team^.voicepack)
end;
- HHGear^.Message:= HHGear^.Message and not (gmLJump or gmHJump);
+ HHGear^.Message:= HHGear^.Message and (not (gmLJump or gmHJump));
if (not cArtillery) and wasJumping and
TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then SetLittle(HHGear^.dX);
@@ -1066,7 +1066,7 @@
ResurrectHedgehog(Gear);
end else
begin
- Gear^.State:= (Gear^.State or gstHHDeath) and not gstAnimation;
+ Gear^.State:= (Gear^.State or gstHHDeath) and (not gstAnimation);
Gear^.doStep:= @doStepHedgehogDead;
// Death message
AddCaption(Format(GetEventString(eidDied), Gear^.Hedgehog^.Name), cWhiteColor, capgrpMessage);
@@ -1074,7 +1074,7 @@
end
else
begin
- Gear^.State:= Gear^.State and not gstAnimation;
+ Gear^.State:= Gear^.State and (not gstAnimation);
Gear^.doStep:= @doStepHedgehogGone;
// Gone message
@@ -1093,7 +1093,7 @@
begin
if Gear^.Timer = 0 then
begin
- Gear^.State:= Gear^.State and not (gstWait or gstLoser or gstWinner or gstAttacked or gstNotKickable or gstHHChooseTarget);
+ Gear^.State:= Gear^.State and (not (gstWait or gstLoser or gstWinner or gstAttacked or gstNotKickable or gstHHChooseTarget));
Gear^.Active:= false;
AddGearCI(Gear);
exit
--- a/hedgewars/uCommands.pas Sun Nov 27 00:57:43 2011 +0100
+++ b/hedgewars/uCommands.pas Sun Nov 27 14:46:57 2011 +0300
@@ -23,7 +23,7 @@
interface
var isDeveloperMode: boolean;
-type TVariableType = (vtCommand, vtLongInt, vthwFloat, vtBoolean);
+type TVariableType = (vtCommand, vtLongInt, vtBoolean);
TCommandHandler = procedure (var params: shortstring);
procedure initModule;
@@ -75,7 +75,7 @@
//WriteLnToConsole(CmdStr);
if CmdStr[0]=#0 then exit;
c:= CmdStr[1];
-if c in ['/', '$'] then Delete(CmdStr, 1, 1) else c:= '/';
+if (c = '/') or (c = '$') then Delete(CmdStr, 1, 1) else c:= '/';
s:= '';
SplitBySpace(CmdStr, s);
AddFileLog('[Cmd] ' + c + CmdStr + ' (' + inttostr(length(s)) + ')');
@@ -96,12 +96,6 @@
str(PLongInt(t^.Handler)^, s);
WriteLnToConsole('$' + CmdStr + ' is "' + s + '"');
end else val(s, PLongInt(t^.Handler)^);
- vthwFloat: if c='$' then
- if s[0]=#0 then
- begin
- //str(PhwFloat(t^.Handler)^:4:6, s);
- WriteLnToConsole('$' + CmdStr + ' is "' + s + '"');
- end else; //val(s, PhwFloat(t^.Handler)^, i);
vtBoolean: if c='$' then
if s[0]=#0 then
begin
--- a/hedgewars/uTeams.pas Sun Nov 27 00:57:43 2011 +0100
+++ b/hedgewars/uTeams.pas Sun Nov 27 14:46:57 2011 +0300
@@ -142,7 +142,7 @@
c:= CurrentTeam^.Clan^.ClanIndex;
repeat
with ClansArray[c]^ do
- if (CurrTeam = TagTeamIndex) and ((GameFlags And gfTagTeam) <> 0) then
+ if (CurrTeam = TagTeamIndex) and ((GameFlags and gfTagTeam) <> 0) then
begin
TagTeamIndex:= Pred(TagTeamIndex) mod TeamsNumber;
CurrTeam:= Pred(CurrTeam) mod TeamsNumber;
@@ -150,7 +150,7 @@
NextClan:= true;
end;
- if (GameFlags And gfTagTeam) = 0 then inc(c);
+ if (GameFlags and gfTagTeam) = 0 then inc(c);
if c = ClansCount then
begin
@@ -171,7 +171,7 @@
CurrHedgehog:= Succ(CurrHedgehog) mod HedgehogsNumber;
until (Hedgehogs[CurrHedgehog].Gear <> nil) or (CurrHedgehog = PrevHH)
end
- until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) or (PrevTeam = CurrTeam) or ((CurrTeam = TagTeamIndex) and ((GameFlags And gfTagTeam) <> 0));
+ until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) or (PrevTeam = CurrTeam) or ((CurrTeam = TagTeamIndex) and ((GameFlags and gfTagTeam) <> 0));
end
until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil);
@@ -243,7 +243,7 @@
if CurrentHedgehog^.Unplaced then TurnTimeLeft:= 15000
else TurnTimeLeft:= 0
end
-else if ((GameFlags And gfTagTeam) <> 0) and not NextClan then
+else if ((GameFlags and gfTagTeam) <> 0) and (not NextClan) then
begin
if TagTurnTimeLeft <> 0 then TurnTimeLeft:= TagTurnTimeLeft;
TagTurnTimeLeft:= 0;
--- a/tools/PascalBasics.hs Sun Nov 27 00:57:43 2011 +0100
+++ b/tools/PascalBasics.hs Sun Nov 27 14:46:57 2011 +0300
@@ -25,7 +25,7 @@
, "type", "var", "const", "out", "array", "packed"
, "procedure", "function", "with", "for", "to"
, "downto", "div", "mod", "record", "set", "nil"
- , "string", "shortstring", "cdecl", "external"
+ , "string", "cdecl", "external", "if", "then", "else"
] ++ builtin
, reservedOpNames= []
, caseSensitive = False
--- a/tools/PascalParser.hs Sun Nov 27 00:57:43 2011 +0100
+++ b/tools/PascalParser.hs Sun Nov 27 14:46:57 2011 +0300
@@ -50,15 +50,16 @@
deriving Show
data Uses = Uses [Identifier]
deriving Show
-data Phrase = ProcCall Identifier [Expression]
+data Phrase = ProcCall Reference [Expression]
| IfThenElse Expression Phrase (Maybe Phrase)
| WhileCycle Expression Phrase
| RepeatCycle Expression [Phrase]
| ForCycle Identifier Expression Expression Phrase
| WithBlock Reference Phrase
| Phrases [Phrase]
- | SwitchCase Expression [([Expression], Phrase)] (Maybe Phrase)
+ | SwitchCase Expression [([InitExpression], Phrase)] (Maybe Phrase)
| Assignment Reference Expression
+ | NOP
deriving Show
data Expression = Expression String
| BuiltInFunCall [Expression] Reference
@@ -72,10 +73,12 @@
| FloatLiteral String
| HexNumber String
| Reference Reference
+ | SetExpression [Identifier]
| Null
deriving Show
data Reference = ArrayElement [Expression] Reference
| FunCall [Expression] Reference
+ | TypeCast Identifier Reference
| SimpleReference Identifier
| Dereference Reference
| RecordField Reference Reference
@@ -95,6 +98,8 @@
| InitSet [Identifier]
| InitNull
deriving Show
+
+knownTypes = ["shortstring"]
pascalUnit = do
comments
@@ -122,7 +127,8 @@
where
term = comments >> choice [
parens pas (reference >>= postfixes) >>= postfixes
- , char '@' >> reference >>= postfixes >>= return . Address
+ , typeCast >>= postfixes
+ , char '@' >> liftM Address reference >>= postfixes
, liftM SimpleReference iD >>= postfixes
] <?> "simple reference"
@@ -137,6 +143,12 @@
, (brackets pas) (commaSep1 pas $ expression) >>= return . ArrayElement
]
+ typeCast = do
+ t <- choice $ map (\s -> try $ caseInsensitiveString s >>= \i -> notFollowedBy alphaNum >> return i) knownTypes
+ r <- parens pas reference
+ comments
+ return $ TypeCast (Identifier t) r
+
varsDecl1 = varsParser sepEndBy1
varsDecl = varsParser sepEndBy
@@ -420,6 +432,7 @@
term = comments >> choice [
builtInFunction expression >>= \(n, e) -> return $ BuiltInFunCall e (SimpleReference (Identifier n))
, parens pas $ expression
+ , brackets pas (commaSep pas iD) >>= return . SetExpression
, try $ natural pas >>= \i -> notFollowedBy (char '.') >> (return . NumberLiteral . show) i
, try $ float pas >>= return . FloatLiteral . show
, try $ natural pas >>= return . NumberLiteral . show
@@ -437,6 +450,7 @@
, Infix (char '/' >> return (BinOp "/")) AssocLeft
, Infix (try (string "div") >> return (BinOp "div")) AssocLeft
, Infix (try (string "mod") >> return (BinOp "mod")) AssocLeft
+ , Infix (try (string "in") >> return (BinOp "in")) AssocNone
]
, [ Infix (char '+' >> return (BinOp "+")) AssocLeft
, Infix (char '-' >> return (BinOp "-")) AssocLeft
@@ -493,7 +507,7 @@
o2 <- optionMaybe $ do
try $ string "else" >> space
comments
- o <- phrase
+ o <- option NOP phrase
comments
return o
return $ IfThenElse e o1 o2
@@ -556,7 +570,7 @@
comments
cs <- many1 aCase
o2 <- optionMaybe $ do
- try $ string "else"
+ try $ string "else" >> notFollowedBy alphaNum
comments
o <- phrase
comments
@@ -566,7 +580,7 @@
return $ SwitchCase e cs o2
where
aCase = do
- e <- (commaSep pas) expression
+ e <- (commaSep pas) initExpression
comments
char ':'
comments
@@ -575,9 +589,9 @@
return (e, p)
procCall = do
- i <- iD
+ r <- reference
p <- option [] $ (parens pas) parameters
- return $ ProcCall i p
+ return $ ProcCall r p
parameters = (commaSep pas) expression <?> "parameters"
--- a/tools/pas2c.hs Sun Nov 27 00:57:43 2011 +0100
+++ b/tools/pas2c.hs Sun Nov 27 14:46:57 2011 +0300
@@ -131,7 +131,7 @@
phrase2C :: Phrase -> Doc
phrase2C (Phrases p) = text "{" $+$ (nest 4 . vcat . map phrase2C $ p) $+$ text "}"
-phrase2C (ProcCall (Identifier name) params) = text name <> parens (hsep . punctuate (char ',') . map expr2C $ params) <> semi
+phrase2C (ProcCall ref params) = ref2C ref <> parens (hsep . punctuate (char ',') . map expr2C $ params) <> semi
phrase2C (IfThenElse (expr) phrase1 mphrase2) = text "if" <> parens (expr2C expr) $+$ (phrase2C . wrapPhrase) phrase1 $+$ elsePart
where
elsePart | isNothing mphrase2 = empty
@@ -140,8 +140,8 @@
phrase2C (WhileCycle expr phrase) = text "while" <> parens (expr2C expr) $$ (phrase2C $ wrapPhrase phrase)
phrase2C (SwitchCase expr cases mphrase) = text "switch" <> parens (expr2C expr) <> text "of" $+$ (nest 4 . vcat . map case2C) cases
where
- case2C :: ([Expression], Phrase) -> Doc
- case2C (e, p) = text "case" <+> parens (hsep . punctuate (char ',') . map expr2C $ e) <> char ':' <> nest 4 (phrase2C p $+$ text "break;")
+ case2C :: ([InitExpression], Phrase) -> Doc
+ case2C (e, p) = text "case" <+> parens (hsep . punctuate (char ',') . map initExpr2C $ e) <> char ':' <> nest 4 (phrase2C p $+$ text "break;")
phrase2C (WithBlock ref p) = text "namespace" <> parens (ref2C ref) $$ (phrase2C $ wrapPhrase p)
phrase2C (ForCycle (Identifier i) e1 e2 p) =
text "for" <> (parens . hsep . punctuate (char ';') $ [text i <+> text "=" <+> expr2C e1, text i <+> text "<=" <+> expr2C e2, text "++" <> text i])