hedgewars/HHHandlers.inc
changeset 855 8842c71d16bf
parent 854 fef7f2d908bf
child 863 dfa3aa51ecb5
equal deleted inserted replaced
854:fef7f2d908bf 855:8842c71d16bf
   229 
   229 
   230    if ((Gear^.Message and gm_HJump ) <> 0) then
   230    if ((Gear^.Message and gm_HJump ) <> 0) then
   231       begin
   231       begin
   232       DeleteCI(Gear);
   232       DeleteCI(Gear);
   233       Gear^.Message:= Gear^.Message and not gm_HJump;
   233       Gear^.Message:= Gear^.Message and not gm_HJump;
   234       if not TestCollisionYwithGear(Gear, -1) then
   234 
   235          begin
   235       Gear^.dY:= -_0_2;
   236          Gear^.dY:= -_0_2;
   236       SetLittle(Gear^.dX);
   237          SetLittle(Gear^.dX);
   237       Gear^.State:= Gear^.State or gstMoving or gstHHJumping;
   238          Gear^.State:= Gear^.State or gstMoving or gstHHJumping;
   238       PlaySound(sndJump3, false);
   239          PlaySound(sndJump3, false);
   239       exit
   240          exit
       
   241          end;
       
   242       end;
   240       end;
   243 
   241 
   244    PrevdX:= hwSign(Gear^.dX);
   242    PrevdX:= hwSign(Gear^.dX);
   245    if (Gear^.Message and gm_Left  )<>0 then Gear^.dX:= -cLittle else
   243    if (Gear^.Message and gm_Left  )<>0 then Gear^.dX:= -cLittle else
   246    if (Gear^.Message and gm_Right )<>0 then Gear^.dX:=  cLittle else exit;
   244    if (Gear^.Message and gm_Right )<>0 then Gear^.dX:=  cLittle else exit;
   319 procedure doStepHedgehog(Gear: PGear); forward;
   317 procedure doStepHedgehog(Gear: PGear); forward;
   320 ////////////////////////////////////////////////////////////////////////////////
   318 ////////////////////////////////////////////////////////////////////////////////
   321 procedure doStepHedgehogMoving(Gear: PGear);
   319 procedure doStepHedgehogMoving(Gear: PGear);
   322 var isFalling: boolean;
   320 var isFalling: boolean;
   323 begin
   321 begin
   324 isFalling:= not TestCollisionYKick(Gear, 1);
   322 isFalling:= (Gear^.dY.isNegative) or not TestCollisionYKick(Gear, 1);
   325 if isFalling then
   323 if isFalling then
   326    begin
   324    begin
   327    if (Gear^.dY.isNegative) and TestCollisionYKick(Gear, -1) then Gear^.dY:= _0;
   325    if (Gear^.dY.isNegative) and TestCollisionYKick(Gear, -1) then Gear^.dY:= _0;
   328    Gear^.State:= Gear^.State or gstMoving;
   326    Gear^.State:= Gear^.State or gstMoving;
   329    Gear^.dY:= Gear^.dY + cGravity
   327    Gear^.dY:= Gear^.dY + cGravity
   421 		and (Ammo^[CurSlot, CurAmmo].AmmoType = amParachute) then Gear^.Message:= Gear^.Message or gm_Attack;
   419 		and (Ammo^[CurSlot, CurAmmo].AmmoType = amParachute) then Gear^.Message:= Gear^.Message or gm_Attack;
   422 	// check for case with ammo
   420 	// check for case with ammo
   423 	t:= CheckGearNear(Gear, gtCase, 36, 36);
   421 	t:= CheckGearNear(Gear, gtCase, 36, 36);
   424 	if t <> nil then
   422 	if t <> nil then
   425 		PickUp(Gear, t)
   423 		PickUp(Gear, t)
   426 	end; 
   424 	end;
   427 
   425 
   428 if CurAmmoGear <> nil then
   426 if CurAmmoGear <> nil then
   429    begin
   427    begin
   430    CurAmmoGear^.Message:= Gear^.Message;
   428    CurAmmoGear^.Message:= Gear^.Message;
   431    exit
   429    exit