hedgewars/uGearsHandlersMess.pas
changeset 15145 d47122a0e4b4
parent 15134 0e0b5fc1674e
child 15148 95b72e81a866
equal deleted inserted replaced
15144:59c595191eba 15145:d47122a0e4b4
  2969 ////////////////////////////////////////////////////////////////////////////////
  2969 ////////////////////////////////////////////////////////////////////////////////
  2970 
  2970 
  2971 procedure doStepParachuteWork(Gear: PGear);
  2971 procedure doStepParachuteWork(Gear: PGear);
  2972 var
  2972 var
  2973     HHGear: PGear;
  2973     HHGear: PGear;
  2974     deltaX: hwFloat;
  2974     deltaX, deltaY: hwFloat;
  2975 begin
  2975 begin
  2976     HHGear := Gear^.Hedgehog^.Gear;
  2976     HHGear := Gear^.Hedgehog^.Gear;
  2977 
  2977 
  2978     inc(Gear^.Timer);
  2978     inc(Gear^.Timer);
  2979 
  2979 
  2997         exit
  2997         exit
  2998         end;
  2998         end;
  2999 
  2999 
  3000     deltaX:= _0;
  3000     deltaX:= _0;
  3001     deltaX:= deltaX + cWindSpeed * 200;
  3001     deltaX:= deltaX + cWindSpeed * 200;
       
  3002     deltaY:= _0;
  3002 
  3003 
  3003     if (Gear^.Message and gmLeft) <> 0 then
  3004     if (Gear^.Message and gmLeft) <> 0 then
  3004         deltaX := deltaX - cMaxWindSpeed * 80
  3005         deltaX := deltaX - cMaxWindSpeed * 80
  3005 
  3006 
  3006     else if (Gear^.Message and gmRight) <> 0 then
  3007     else if (Gear^.Message and gmRight) <> 0 then
  3007         deltaX := deltaX + cMaxWindSpeed * 80;
  3008         deltaX := deltaX + cMaxWindSpeed * 80;
  3008 
  3009 
  3009     if (Gear^.Message and gmUp) <> 0 then
  3010     if (Gear^.Message and gmUp) <> 0 then
  3010         HHGear^.Y := HHGear^.Y - cGravity * 40
  3011         deltaY := deltaY - cGravity * 40
  3011 
  3012 
  3012     else if (Gear^.Message and gmDown) <> 0 then
  3013     else if (Gear^.Message and gmDown) <> 0 then
  3013         HHGear^.Y := HHGear^.Y + cGravity * 40;
  3014         deltaY := deltaY + cGravity * 40;
  3014 
  3015 
  3015     HHGear^.X := HHGear^.X + deltaX;
  3016     HHGear^.X := HHGear^.X + deltaX;
  3016     // don't drift into obstacles
  3017     // don't drift into obstacles
  3017     if TestCollisionXwithGear(HHGear, hwSign(deltaX)) <> 0 then
  3018     if TestCollisionXwithGear(HHGear, hwSign(deltaX)) <> 0 then
       
  3019         begin
  3018         HHGear^.X := HHGear^.X - int2hwFloat(hwSign(deltaX));
  3020         HHGear^.X := HHGear^.X - int2hwFloat(hwSign(deltaX));
  3019     HHGear^.Y := HHGear^.Y + cGravity * 100;
  3021         deltaX:= _0;
       
  3022         end;
       
  3023     deltaY := deltaY + cGravity * 100;
       
  3024     HHGear^.Y := HHGear^.Y + deltaY;
       
  3025 
       
  3026     HHGear^.dX := deltaX;
       
  3027     HHGear^.dY := deltaY;
       
  3028 
  3020     Gear^.X := HHGear^.X;
  3029     Gear^.X := HHGear^.X;
  3021     Gear^.Y := HHGear^.Y
  3030     Gear^.Y := HHGear^.Y
  3022 end;
  3031 end;
  3023 
  3032 
  3024 procedure doStepParachute(Gear: PGear);
  3033 procedure doStepParachute(Gear: PGear);