public IAutoTacticalCameraKeyHandler CreateAutoTacticalCameraHandler
 (
     IGameValueService gameValueService,
     AutoTacticalCameraKeys autoTacticalCameraKeys,
     float turnOnTacticalCameraThreshold
 )
 {
     return(new AutoTacticalCameraKeyHandler(gameValueService, autoTacticalCameraKeys, turnOnTacticalCameraThreshold));
 }
        public AutoTacticalCameraKeyHandler(IGameValueService gameValueService, AutoTacticalCameraKeys keys, float turnOnTacticalCameraZoomThreshold)
        {
            _gameValueService = gameValueService;
            _keys             = keys;

            if (turnOnTacticalCameraZoomThreshold < 0)
            {
                throw new ArgumentException("Automatic camera threshold cannot be lower than 0", nameof(turnOnTacticalCameraZoomThreshold));
            }

            // The game uses slightly different values, where 1 is the closest zoom and -1 is the furthest zoom
            // If unlimited zoom is enabled we can go below -1
            _turnOnTacticalCameraThreshold = -turnOnTacticalCameraZoomThreshold;
        }