public SnakeMovementSmoothComponent(ISnakeEntity snakeEntity, IGameFieldComponent gameFieldComponent, IGameSettings gameSettings, SnakeControlKeys snakeControlKeys, IMovingCalculator movingCalculator)
        {
            _snakeEntity        = snakeEntity ?? throw new ArgumentNullException(nameof(snakeEntity));
            _gameFieldComponent = gameFieldComponent ?? throw new ArgumentNullException(nameof(gameFieldComponent));
            _gameSettings       = gameSettings ?? throw new ArgumentNullException(nameof(gameSettings));
            _snakeControlKeys   = snakeControlKeys ?? throw new ArgumentNullException(nameof(snakeControlKeys));
            _movingCalculator   = movingCalculator ?? throw new ArgumentNullException(nameof(movingCalculator));
            _unitVector         = Vector2.Multiply(Vector2.UnitX, _gameSettings.TileSize);

            _movingInterval = TimeSpan.FromMilliseconds(_gameSettings.DefaultMoveIntervalTime);
        }
        public SnakeMovementTurnBased(ISnakeEntity snake, IGameFieldEntity gameField, IGameSettings gameSettings, SnakeControlKeys controls)
        {
            _snake        = snake;
            _gameField    = gameField;
            _gameSettings = gameSettings;
            _controls     = controls;

            _movingInterval = TimeSpan.FromMilliseconds(_gameSettings.DefaultMoveIntervalTime);

            _unitVector = Vector2.Multiply(Vector2.UnitX, _gameSettings.TileSize);
        }