hedgewars/GSHandlers.inc
changeset 3821 03b1af3a1c8f
parent 3802 2ccfc93c6b5e
child 3836 833c0f32e326
equal deleted inserted replaced
3820:bc3efe1c71ab 3821:03b1af3a1c8f
  3951     HHGear: PGear;
  3951     HHGear: PGear;
  3952 begin
  3952 begin
  3953     AllInactive := false;
  3953     AllInactive := false;
  3954     HHGear := PHedgehog(Gear^.Hedgehog)^.Gear;
  3954     HHGear := PHedgehog(Gear^.Hedgehog)^.Gear;
  3955     dec(Gear^.Timer);
  3955     dec(Gear^.Timer);
  3956     if (Gear^.Timer = 0)or((Gear^.Message and gm_Destroy) <> 0) then
  3956     if (HHGear = nil) or (Gear^.Timer = 0) or ((Gear^.Message and gm_Destroy) <> 0) then
  3957     begin
  3957     begin
  3958         DeleteGear(Gear);
  3958         DeleteGear(Gear);
  3959         exit
  3959         exit
  3960     end;
  3960     end;
  3961 
  3961 
  3993     end;
  3993     end;
  3994 
  3994 
  3995     Gear^.X := Gear^.X + HHGear^.dX;
  3995     Gear^.X := Gear^.X + HHGear^.dX;
  3996     HHGear^.X := Gear^.X;
  3996     HHGear^.X := Gear^.X;
  3997     HHGear^.Y := Gear^.Y - int2hwFloat(cHHRadius);
  3997     HHGear^.Y := Gear^.Y - int2hwFloat(cHHRadius);
  3998 
       
  3999     if (Gear^.Message and gm_Attack) <> 0 then
       
  4000         if (Gear^.State and gsttmpFlag) <> 0 then Gear^.Timer := 1
       
  4001     else
       
  4002     else
       
  4003         if (Gear^.State and gsttmpFlag) = 0 then Gear^.State := Gear^.State or gsttmpFlag;
       
  4004     if ((Gear^.Message and gm_Left) <> 0) then Gear^.dX := - _0_3
       
  4005     else
       
  4006         if ((Gear^.Message and gm_Right) <> 0) then Gear^.dX := _0_3
       
  4007     else Gear^.dX := _0;
       
  4008 end;
  3998 end;
  4009 
  3999 
  4010 procedure doStepHammerHit(Gear: PGear);
  4000 procedure doStepHammerHit(Gear: PGear);
  4011 var 
  4001 var 
  4012     i, y: LongInt;
  4002     i, y: LongInt;
  4028     DrawHLinesExplosions(@ar, 3, hwRound(Gear^.Y) - cHHRadius * 2, 2, Pred(i));
  4018     DrawHLinesExplosions(@ar, 3, hwRound(Gear^.Y) - cHHRadius * 2, 2, Pred(i));
  4029     Gear^.dY := HHGear^.dY;
  4019     Gear^.dY := HHGear^.dY;
  4030     DeleteCI(HHGear);
  4020     DeleteCI(HHGear);
  4031 
  4021 
  4032     doStepHammerHitWork(Gear);
  4022     doStepHammerHitWork(Gear);
  4033     Gear^.doStep := @doStepHammerHit
  4023     Gear^.doStep := @doStepHammerHitWork
  4034 end;
  4024 end;