hedgewars/GSHandlers.inc
changeset 2982 4213c6a8aceb
parent 2974 f3fa665f0874
child 2983 25b6b554c516
equal deleted inserted replaced
2981:d0471586a616 2982:4213c6a8aceb
    44 ////////////////////////////////////////////////////////////////////////////////
    44 ////////////////////////////////////////////////////////////////////////////////
    45 procedure doStepDrowningGear(Gear: PGear); forward;
    45 procedure doStepDrowningGear(Gear: PGear); forward;
    46 
    46 
    47 function CheckGearDrowning(Gear: PGear): boolean;
    47 function CheckGearDrowning(Gear: PGear): boolean;
    48 var skipSpeed, skipAngle, skipDecay: hwFloat;
    48 var skipSpeed, skipAngle, skipDecay: hwFloat;
       
    49     i, maxDrops: LongInt;
       
    50     particle: PVisualGear;
    49 begin
    51 begin
    50 // probably needs tweaking. might need to be in a case statement based upon gear type
    52 // probably needs tweaking. might need to be in a case statement based upon gear type
    51 //(not Gear^.dY.isNegative) and  this should not be necessary
    53 //(not Gear^.dY.isNegative) and  this should not be necessary
    52 if cWaterLine < hwRound(Gear^.Y) + Gear^.Radius then
    54 if cWaterLine < hwRound(Gear^.Y) + Gear^.Radius then
    53     begin
    55     begin
    73             Gear^.State:= Gear^.State and (not gstHHDriven);
    75             Gear^.State:= Gear^.State and (not gstHHDriven);
    74             AddCaption(Format(GetEventString(eidDrowned), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage);
    76             AddCaption(Format(GetEventString(eidDrowned), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage);
    75             end
    77             end
    76         end;
    78         end;
    77     PlaySound(sndSplash);
    79     PlaySound(sndSplash);
    78     AddVisualGear(hwRound(Gear^.X), LAND_HEIGHT, vgtSplash);
    80     
       
    81     if not cReducedQuality then 
       
    82         begin
       
    83         AddVisualGear(hwRound(Gear^.X), LAND_HEIGHT, vgtSplash);
       
    84        
       
    85         maxDrops := (Gear^.Radius div 2) + hwRound(Gear^.dX * Gear^.Radius * 2) + hwRound(Gear^.dY * Gear^.Radius * 2);
       
    86         for i:= max(maxDrops div 3, min(32, Random(maxDrops))) downto 0 do 
       
    87             begin
       
    88             particle := AddVisualGear(hwRound(Gear^.X) - 3 + Random(6), LAND_HEIGHT, vgtDroplet);
       
    89             if particle <> nil then
       
    90                 begin
       
    91                 particle^.dX := particle^.dX + (Gear^.dX / 5);
       
    92                 particle^.dY := particle^.dY - (Gear^.dY / 5)
       
    93                 end
       
    94             end
       
    95         end;
    79     end
    96     end
    80     else
    97     else
    81     CheckGearDrowning:= false
    98     CheckGearDrowning:= false
    82 end;
    99 end;
    83 
   100