Issue 768: Bee: Camera focus lost
authorsheepluva
Sun, 14 Dec 2014 21:54:54 +0100
changeset 10672 c2004c3e9c7d
parent 10671 17dd6265a08a
child 10673 2f19ff0ded73
issue #768: Bee: Camera focus lost
hedgewars/uCommandHandlers.pas
hedgewars/uWorld.pas
--- a/hedgewars/uCommandHandlers.pas	Sun Dec 14 20:11:36 2014 +0100
+++ b/hedgewars/uCommandHandlers.pas	Sun Dec 14 21:54:54 2014 +0100
@@ -323,6 +323,7 @@
 end;
 
 procedure chAttack_p(var s: shortstring);
+var inbtwnTrgtAttks: Boolean;
 begin
 s:= s; // avoid compiler hint
 if CheckNoTeamOrHH then
@@ -333,7 +334,9 @@
     AddFileLog('/+attack: hedgehog''s Gear^.State = '+inttostr(State));
     if ((State and gstHHDriven) <> 0) then
         begin
-        FollowGear:= CurrentHedgehog^.Gear;
+        inbtwnTrgtAttks:= ((GameFlags and gfInfAttack) <> 0) and ((Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NeedTarget) <> 0);
+        if (not inbtwnTrgtAttks) then
+            FollowGear:= CurrentHedgehog^.Gear;
         if not isExternalSource then
             SendIPC(_S'A');
         Message:= Message or (gmAttack and InputMask);
--- a/hedgewars/uWorld.pas	Sun Dec 14 20:11:36 2014 +0100
+++ b/hedgewars/uWorld.pas	Sun Dec 14 21:54:54 2014 +0100
@@ -1857,7 +1857,7 @@
     uCursor.updatePosition();
 {$ENDIF}
 z:= round(200/zoom);
-inbtwnTrgtAttks := (CurrentHedgehog <> nil) and ((Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NeedTarget) <> 0) and ((GameFlags and gfInfAttack) <> 0);
+inbtwnTrgtAttks := ((GameFlags and gfInfAttack) <> 0) and (CurrentHedgehog <> nil) and ((CurrentHedgehog^.Gear = nil) or (CurrentHedgehog^.Gear <> FollowGear)) and ((Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NeedTarget) <> 0);
 if autoCameraOn and (not PlacingHogs) and (FollowGear <> nil) and (not isCursorVisible) and (not bShowAmmoMenu) and (not fastUntilLag) and (not inbtwnTrgtAttks) then
     if ((abs(CursorPoint.X - prevPoint.X) + abs(CursorPoint.Y - prevpoint.Y)) > 4) then
         begin