hedgewars/uGearsHandlersRope.pas
changeset 13074 ba7ac61c7668
parent 12826 f3e07e53460d
child 13082 c213645ff848
equal deleted inserted replaced
13073:6369d148cfff 13074:ba7ac61c7668
    24 
    24 
    25 procedure doStepRope(Gear: PGear);
    25 procedure doStepRope(Gear: PGear);
    26 
    26 
    27 implementation
    27 implementation
    28 uses uConsts, uFloat, uCollisions, uVariables, uGearsList, uSound, uGearsUtils,
    28 uses uConsts, uFloat, uCollisions, uVariables, uGearsList, uSound, uGearsUtils,
    29     uAmmos, uDebug, uUtils, uGearsHedgehog, uGearsRender;
    29     uAmmos, uDebug, uUtils, uGearsHedgehog, uGearsRender, uGearsHandlersMess;
    30 
    30 
    31 const
    31 const
    32     IsNilHHFatal = false;
    32     IsNilHHFatal = false;
    33 
    33 
    34 procedure doStepRopeAfterAttack(Gear: PGear);
    34 procedure doStepRopeAfterAttack(Gear: PGear);
   460 
   460 
   461     DeleteCI(HHGear);
   461     DeleteCI(HHGear);
   462 
   462 
   463     if (HHGear^.State and gstMoving) <> 0 then
   463     if (HHGear^.State and gstMoving) <> 0 then
   464         begin
   464         begin
   465         if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) <> 0 then
   465         doStepHedgehogMoving(HHGear);
   466             SetLittle(HHGear^.dX);
       
   467         if HHGear^.dY.isNegative and (TestCollisionYwithGear(HHGear, -1) <> 0) then
       
   468             HHGear^.dY := _0;
       
   469 
       
   470         HHGear^.X := HHGear^.X + HHGear^.dX;
       
   471         Gear^.X := Gear^.X + HHGear^.dX;
   466         Gear^.X := Gear^.X + HHGear^.dX;
   472 
   467         Gear^.Y := Gear^.Y + HHGear^.dY;
   473         if TestCollisionYwithGear(HHGear, 1) <> 0 then
   468 
   474             begin
       
   475             CheckHHDamage(HHGear);
       
   476             HHGear^.dY := _0
       
   477             //HHGear^.State:= HHGear^.State and (not (gstHHJumping or gstHHHJump));
       
   478             end
       
   479         else
       
   480             begin
       
   481             HHGear^.Y := HHGear^.Y + HHGear^.dY;
       
   482             Gear^.Y := Gear^.Y + HHGear^.dY;
       
   483             HHGear^.dY := HHGear^.dY + cGravity;
       
   484             if (GameFlags and gfMoreWind) <> 0 then
       
   485                 HHGear^.dX := HHGear^.dX + cWindSpeed / HHGear^.Density
       
   486             end;
       
   487 
   469 
   488         tt := Gear^.Elasticity;
   470         tt := Gear^.Elasticity;
   489         tx := _0;
   471         tx := _0;
   490         ty := _0;
   472         ty := _0;
   491         while tt > _20 do
   473         while tt > _20 do