equal
deleted
inserted
replaced
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 |