hedgewars/HHHandlers.inc
changeset 868 4884bce5e5eb
parent 866 ac6f6c95c23f
child 876 d5b6e0ae5755
equal deleted inserted replaced
867:dc7901b1120e 868:4884bce5e5eb
   160      end
   160      end
   161 end;
   161 end;
   162 
   162 
   163 ////////////////////////////////////////////////////////////////////////////////
   163 ////////////////////////////////////////////////////////////////////////////////
   164 procedure doStepHedgehogDead(Gear: PGear);
   164 procedure doStepHedgehogDead(Gear: PGear);
       
   165 const frametime = 200;
       
   166       timertime = frametime * 6;
   165 begin
   167 begin
   166 if Gear^.Timer > 1 then
   168 if Gear^.Timer > 1 then
   167 	begin
   169 	begin
   168 	AllInactive:= false;
   170 	AllInactive:= false;
   169 	dec(Gear^.Timer)
   171 	dec(Gear^.Timer);
       
   172 	if (Gear^.Timer mod frametime) = 0 then inc(Gear^.Pos)
   170 	end else
   173 	end else
   171 if Gear^.Timer = 1 then
   174 if Gear^.Timer = 1 then
   172 	begin
   175 	begin
   173 	Gear^.State:= Gear^.State or gstNoDamage;
   176 	Gear^.State:= Gear^.State or gstNoDamage;
   174 	doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound);
   177 	doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound);
   176 	DeleteGear(Gear);
   179 	DeleteGear(Gear);
   177 	SetAllToActive
   180 	SetAllToActive
   178 	end else // Gear^.Timer = 0
   181 	end else // Gear^.Timer = 0
   179 	begin
   182 	begin
   180 	AllInactive:= false;
   183 	AllInactive:= false;
       
   184 	Gear^.Z:= cCurrHHZ;
       
   185 	RemoveGearFromList(Gear);
       
   186 	InsertGearToList(Gear);
   181 	PlaySound(sndByeBye, false);
   187 	PlaySound(sndByeBye, false);
   182 	Gear^.Timer:= 1100
   188 	Gear^.Pos:= 0;
       
   189 	Gear^.Timer:= timertime
   183 	end
   190 	end
   184 end;
   191 end;
   185 
   192 
   186 ////////////////////////////////////////////////////////////////////////////////
   193 ////////////////////////////////////////////////////////////////////////////////
   187 procedure PickUp(HH, Gear: PGear);
   194 procedure PickUp(HH, Gear: PGear);
   508 	exit
   515 	exit
   509 	end;
   516 	end;
   510 
   517 
   511 if (Gear^.Health = 0) then
   518 if (Gear^.Health = 0) then
   512 	begin
   519 	begin
   513 	if AllInactive then
   520 	if PrvInactive then
   514 		begin
   521 		begin
   515 		Gear^.Timer:= 0;
   522 		Gear^.Timer:= 0;
   516 		Gear^.doStep:= @doStepHedgehogDead
   523 		Gear^.State:= Gear^.State or gstHHDeath;
       
   524 		Gear^.doStep:= @doStepHedgehogDead;
       
   525 		PrvInactive:= false;
       
   526 		AllInactive:= false
   517 		end;
   527 		end;
   518 	AllInactive:= false;
       
   519 	exit
   528 	exit
   520 	end;
   529 	end;
   521 
   530 
   522 if ((Gear^.State and gstAnimation) = 0) and
   531 if ((Gear^.State and gstAnimation) = 0) and
   523 	(prevState <> Gear^.State) then
   532 	(prevState <> Gear^.State) then