private void MoveDownConstant(BlockFacade blockFacade)
 {
     _secondsPassedAfterMove += Time.deltaTime;
     if (_secondsPassedAfterMove >= _secondsBetweenMove)
     {
         blockFacade.BlockTransform.position += Vector3.down;
         _secondsPassedAfterMove              = 0;
         if (!_gridProcessor.CheckMovementIsValid(blockFacade.BlockTransform))
         {
             _audioPlayer.PlaySound(SoundType.DropBlock);
             blockFacade.BlockTransform.position -= Vector3.down;
             _gridProcessor.AddToGrid(blockFacade.BlockTransform);
             if (_gridProcessor.CheckIfTopBorderReached(blockFacade.BlockTransform))
             {
                 _audioPlayer.PlaySound(SoundType.EndGame);
                 _gridProcessor.DetachChildren(blockFacade.BlockTransform);
             }
             else
             {
                 _gridProcessor.DetachChildren(blockFacade.BlockTransform);
                 _gridProcessor.CheckForFullLines();
             }
         }
         else
         {
             _audioPlayer.PlaySound(SoundType.MoveBlock);
         }
     }
 }
        private void HandleUserInput(BlockFacade blockFacade)
        {
            if (Input.GetKeyDown(KeyCode.RightArrow))
            {
                MoveByControls(blockFacade, Vector3.right);
            }

            if (Input.GetKeyDown(KeyCode.LeftArrow))
            {
                MoveByControls(blockFacade, Vector3.left);
            }

            if (Input.GetKeyDown(KeyCode.UpArrow))
            {
                RotateByControls(blockFacade);
            }

            if (Input.GetKey(KeyCode.DownArrow))
            {
                ChangeMoveRate(_speedSettings.currentSpeed / 15);
            }
            else
            {
                ChangeMoveRate(_speedSettings.currentSpeed);
            }
        }
 private void RotateByControls(BlockFacade blockFacade)
 {
     _audioPlayer.PlaySound(SoundType.RotateBlock);
     blockFacade.BlockTransform.RotateAround(blockFacade.BlockTransform.TransformPoint(blockFacade.RotationPoint), Vector3.forward, 90);
     if (!_gridProcessor.CheckMovementIsValid(blockFacade.BlockTransform))
     {
         blockFacade.BlockTransform.RotateAround(blockFacade.BlockTransform.TransformPoint(blockFacade.RotationPoint), Vector3.forward, -90);
     }
 }
 private void MoveByControls(BlockFacade blockFacade, Vector3 movement)
 {
     _audioPlayer.PlaySound(SoundType.MoveBlock);
     blockFacade.BlockTransform.position += movement;
     if (!_gridProcessor.CheckMovementIsValid(blockFacade.BlockTransform))
     {
         blockFacade.BlockTransform.position -= movement;
     }
 }
        public void Move(BlockFacade blockFacade)
        {
            if (!IsMovementEnabled)
            {
                return;
            }

            HandleUserInput(blockFacade);
            MoveDownConstant(blockFacade);
        }
        public void SpawnNewBlock()
        {
            _currentBlock = _nextBlock ?? _blockFactory.Create();
            _currentBlock.BlockTransform.position = _spawnPoint.transform.position;
            _currentBlock.BlockTransform.gameObject.SetActive(true);
            _currentBlock.GhostBlockTransform.gameObject.SetActive(true);

            _nextBlock = _blockFactory.Create();
            _nextBlock.BlockTransform.position = _spawnPoint.transform.position;
            _nextBlock.BlockTransform.gameObject.SetActive(false);
            _nextBlock.GhostBlockTransform.gameObject.SetActive(false);

            _blockPreviewImage.sprite = _nextBlock.Block.PreviewSprite;
        }
        public void Move(BlockFacade blockFacade)
        {
            if (!IsMovementEnabled)
            {
                return;
            }

            blockFacade.GhostBlockTransform.position = blockFacade.BlockTransform.position;
            blockFacade.GhostBlockTransform.rotation = blockFacade.BlockTransform.rotation;

            while (_gridProcessor.CheckMovementIsValid(blockFacade.GhostBlockTransform))
            {
                blockFacade.GhostBlockTransform.position += Vector3.down;
            }

            if (!_gridProcessor.CheckMovementIsValid(blockFacade.GhostBlockTransform))
            {
                blockFacade.GhostBlockTransform.position += Vector3.up;
            }
        }