public void PlayQuakeAnimation(int x, int y, int radius, float addDelay = 0)
        {
            if (Time.realtimeSinceStartup < quakeAnimationCooldown)
            {
                return;
            }

            var calculatedTotalDurationOfAnimation = ((radius * 0.25f) * 0.5f) + 0.75f;

            quakeAnimationCooldown = Time.realtimeSinceStartup + calculatedTotalDurationOfAnimation;

            var center  = new Vector2(x, y);
            var current = Vector2.zero;

            for (int y2 = y - radius; y2 <= y + radius; y2++)
            {
                for (int x2 = x - radius; x2 <= x + radius; x2++)
                {
                    if (x2 < 0 || x2 >= LevelData.Width ||
                        y2 < 0 || y2 >= LevelData.Height)
                    {
                        continue;
                    }

                    current.x = x2;
                    current.y = y2;

                    var distance = Vector2.Distance(current, center);

                    if (distance <= radius)
                    {
                        var tile      = LevelData.Tiles[x2, y2].transform;
                        var originalY = tile.position.y;

                        var delay = addDelay + (distance * 0.25f) * 0.5f;

                        var sequence = DOTween.Sequence();
                        sequence.PrependInterval(delay);
                        sequence.Append(tile.DOLocalMoveY(originalY + 0.1f, 0.25f).SetEase(Ease.OutBack));
                        sequence.Append(tile.DOLocalMoveY(originalY - 0.1f, 0.25f).SetEase(Ease.OutBack));
                        sequence.Append(tile.DOLocalMoveY(originalY, 0.25f));

                        for (int i = 0; i < LevelData.Entities.Count; i++)
                        {
                            var entity = LevelData.Entities[i];
                            if (entity.gameObject.activeSelf &&
                                entity.GridPosition == current)
                            {
                                var sequence2 = DOTween.Sequence();
                                sequence2.PrependInterval(delay);
                                var entityTransform = entity.gameObject.transform;
                                sequence2.Append(entityTransform.DOLocalMoveY(originalY + 0.1f, 0.25f).SetEase(Ease.OutBack));
                                sequence2.Append(entityTransform.DOLocalMoveY(originalY - 0.1f, 0.25f).SetEase(Ease.OutBack));
                                sequence2.Append(entityTransform.DOLocalMoveY(originalY, 0.25f));
                            }
                        }
                    }
                }
            }

            audio.PlayQuake();
        }