hedgewars/GSHandlers.inc
changeset 2143 ad05f6b2d1c0
parent 2142 48ed98cfd119
child 2177 c045698e044f
equal deleted inserted replaced
2142:48ed98cfd119 2143:ad05f6b2d1c0
    90 ////////////////////////////////////////////////////////////////////////////////
    90 ////////////////////////////////////////////////////////////////////////////////
    91 procedure doStepDrowningGear(Gear: PGear);
    91 procedure doStepDrowningGear(Gear: PGear);
    92 begin
    92 begin
    93 AllInactive:= false;
    93 AllInactive:= false;
    94 Gear^.Y:= Gear^.Y + cDrownSpeed;
    94 Gear^.Y:= Gear^.Y + cDrownSpeed;
    95 if hwRound(Gear^.Y) > Gear^.Radius + cWaterLine + cVisibleWater then DeleteGear(Gear)
    95 if hwRound(Gear^.Y) > Gear^.Radius + cWaterLine + cVisibleWater then DeleteGear(Gear);
       
    96 // Create some bubbles (0.5% might be better but causes too few bubbles sometimes)
       
    97 if Random(1000) < 10 then AddVisualGear(hwRound(Gear^.X) - Gear^.Radius, hwRound(Gear^.Y) - Gear^.Radius, vgtBubble);
    96 end;
    98 end;
    97 
    99 
    98 ////////////////////////////////////////////////////////////////////////////////
   100 ////////////////////////////////////////////////////////////////////////////////
    99 procedure doStepFallingGear(Gear: PGear);
   101 procedure doStepFallingGear(Gear: PGear);
   100 var isFalling: boolean;
   102 var isFalling: boolean;
  1205 Gear^.doStep:= @doStepIdle
  1207 Gear^.doStep:= @doStepIdle
  1206 end;
  1208 end;
  1207 
  1209 
  1208 ////////////////////////////////////////////////////////////////////////////////
  1210 ////////////////////////////////////////////////////////////////////////////////
  1209 procedure doStepFlame(Gear: PGear);
  1211 procedure doStepFlame(Gear: PGear);
       
  1212 var i: Integer;
  1210 begin
  1213 begin
  1211 AllInactive:= false;
  1214 AllInactive:= false;
  1212 
  1215 
  1213 if not TestCollisionYwithGear(Gear, 1) then
  1216 if not TestCollisionYwithGear(Gear, 1) then
  1214 	begin
  1217 	begin
  1219 	if hwAbs(Gear^.dY) > _0_2 then Gear^.dY:= Gear^.dY * _0_995;
  1222 	if hwAbs(Gear^.dY) > _0_2 then Gear^.dY:= Gear^.dY * _0_995;
  1220 	
  1223 	
  1221 	Gear^.X:= Gear^.X + Gear^.dX + cWindSpeed * 640;
  1224 	Gear^.X:= Gear^.X + Gear^.dX + cWindSpeed * 640;
  1222 	Gear^.Y:= Gear^.Y + Gear^.dY;
  1225 	Gear^.Y:= Gear^.Y + Gear^.dY;
  1223 	
  1226 	
  1224 	if not (hwRound(Gear^.Y) < cWaterLine) then
  1227 	if (hwRound(Gear^.Y) > cWaterLine) then
  1225 		begin
  1228 		begin
       
  1229 		for i:= 0 to 3 do
       
  1230 			begin
       
  1231 			AddVisualGear(hwRound(Gear^.X) - 16 + Random(32), hwRound(Gear^.Y) - 16 + Random(16), vgtSteam);
       
  1232 			PlaySound(sndVaporize, false, nil);
       
  1233 			end;
  1226 		DeleteGear(Gear);
  1234 		DeleteGear(Gear);
  1227 		exit
  1235 		exit
  1228 		end
  1236 		end
  1229 	end else begin
  1237 	end else begin
  1230 	if Gear^.Timer > 0 then dec(Gear^.Timer)
  1238 	if Gear^.Timer > 0 then dec(Gear^.Timer)