hedgewars/uGearsHandlersMess.pas
changeset 10494 0eb97cf4c78e
parent 10490 b30b8d39d662
child 10508 1a91c1fcba0d
equal deleted inserted replaced
10493:bcbf029e6b08 10494:0eb97cf4c78e
   279 
   279 
   280 Gear^.Y := Gear^.Y + cDrownSpeed;
   280 Gear^.Y := Gear^.Y + cDrownSpeed;
   281 
   281 
   282 if cWaterLine > hwRound(Gear^.Y) + Gear^.Radius then
   282 if cWaterLine > hwRound(Gear^.Y) + Gear^.Radius then
   283     begin
   283     begin
   284     if leftX > hwRound(Gear^.X) - Gear^.Radius then
   284     if LongInt(leftX) + Gear^.Radius > hwRound(Gear^.X) then
   285         Gear^.X := Gear^.X - cDrownSpeed
   285         Gear^.X := Gear^.X - cDrownSpeed
   286     else
   286     else
   287         Gear^.X := Gear^.X + cDrownSpeed;
   287         Gear^.X := Gear^.X + cDrownSpeed;
   288     end
   288     end
   289 else
   289 else
  2669 procedure doStepSwitcherWork(Gear: PGear);
  2669 procedure doStepSwitcherWork(Gear: PGear);
  2670 var
  2670 var
  2671     HHGear: PGear;
  2671     HHGear: PGear;
  2672     hedgehog: PHedgehog;
  2672     hedgehog: PHedgehog;
  2673     State: Longword;
  2673     State: Longword;
  2674     switchDir: LongInt;
  2674     switchDir: Longword;
  2675 begin
  2675 begin
  2676     AllInactive := false;
  2676     AllInactive := false;
  2677 
  2677 
  2678     if ((Gear^.Message and (not (gmSwitch or gmPrecise))) <> 0) or (TurnTimeLeft = 0) then
  2678     if ((Gear^.Message and (not (gmSwitch or gmPrecise))) <> 0) or (TurnTimeLeft = 0) then
  2679         begin
  2679         begin
  2710         HHGear^.Message:= HHGear^.Message or gmRemoveFromList or gmAddToList;
  2710         HHGear^.Message:= HHGear^.Message or gmRemoveFromList or gmAddToList;
  2711 
  2711 
  2712         PlaySound(sndSwitchHog);
  2712         PlaySound(sndSwitchHog);
  2713 
  2713 
  2714         repeat
  2714         repeat
  2715             CurrentTeam^.CurrHedgehog := (CurrentTeam^.CurrHedgehog + switchDir) mod (CurrentTeam^.HedgehogsNumber);
  2715             CurrentTeam^.CurrHedgehog := (CurrentTeam^.CurrHedgehog + switchDir) mod CurrentTeam^.HedgehogsNumber;
  2716         until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) and
  2716         until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) and
  2717               (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^.Damage = 0) and
  2717               (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^.Damage = 0) and
  2718               (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen]=0);
  2718               (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen]=0);
  2719 
  2719 
  2720         SwitchCurrentHedgehog(@CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog]);
  2720         SwitchCurrentHedgehog(@CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog]);