public void DoInteraction(Cell cell)
        {
            Debug.Log($"[{GetType().Name}][DoInteraction] cell: {cell}");

            if (_isInteractionLocked)
            {
                return;
            }

            var interactionResult = TryInteract(cell);

            SetLockInteraction(true);

            switch (interactionResult)
            {
            case CellInteractionResult.None:
                OnNoneResultHandler();
                break;

            case CellInteractionResult.CellMatching:
                OnCellMatchingResultHandler(cell);
                break;

            case CellInteractionResult.BonusApplying:
                OnBonusApplyingHandler(cell);
                break;
            }

            CoroutineActionHelp.DelayedAction(0f, () => SetLockInteraction(false));
        }
        private void ProcessBonusApplying(Cell cell, bool forced = false)
        {
            var additionalTime = 1.0f;
            var bonusApplyTime = _bonusController.GetBonusApplyTime(cell.CellBonus.Type);

            _bonusApplyCounter++;
            Debug.Log($"[{GetType().Name}][ProcessBonusApplying] _bonusApplyCounter: {_bonusApplyCounter}");
            CoroutineActionHelp.DelayedAction(bonusApplyTime * additionalTime, () => SetLockInteraction(false));
            CoroutineActionHelp.DelayedAction(GameConstants.GameData.DELAY_BEFORE_DROP_DOWN, () => Dropdown(true), forced);
        }
        private void OnCellMatchingResultHandler(Cell cell)
        {
            ResetBonusCounter();
            var bonusType = BonusType.HorizontalRocket;

            if (_bonusController.TryGetBonuses(_matchingCellList.Count, out bonusType))
            {
                ProcessBonusesCreation(_matchingCellList, cell, bonusType);
                CoroutineActionHelp.DelayedAction(GameConstants.BonusData.BONUS_CREATION_TIME * 0.5f, null, true);
            }
            CoroutineActionHelp.DelayedAction(0f, () => SetLockInteraction(false));
            CoroutineActionHelp.DelayedAction(GameConstants.GameData.DELAY_BEFORE_DROP_DOWN, () => Dropdown(false), true);
            AudioManager.PlaySoundFx(SoundFxType.BlockPress);
        }