using UnityEngine;
using TMPro;

public class MultiBallBrick : Brick 
{
    public float splitBallScale = 0.7f; // Масштаб для новых мячей
    public float splitBallSpeedMultiplier = 1.2f; // Множитель скорости для новых мячей
    public int numberOfSplitBalls = 2; // Количество создаваемых мячей

    protected override void Start()
    {
        base.Start();
        
        // Отключаем отображение текста, если оно есть
        TextMeshPro hitPointsText = GetComponentInChildren<TextMeshPro>();
        if (hitPointsText != null)
        {
            hitPointsText.gameObject.SetActive(false);
        }
    }

    protected override void OnCollisionEffect(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("Ball"))
        {
            Ball originalBall = collision.gameObject.GetComponent<Ball>();
            // Проверяем, может ли этот мяч создавать новые мячи
            if (originalBall != null && originalBall.canSpawnBalls)
            {
                // Получаем текущую скорость мяча
                Vector2 currentVelocity = originalBall.GetComponent<Rigidbody2D>().velocity;
                float currentSpeed = currentVelocity.magnitude;

                // Создаем несколько дополнительных мячей
                for (int i = 0; i < numberOfSplitBalls; i++)
                {
                    CreateSplitBall(originalBall.transform.position, currentSpeed);
                }
            }
            
            // Вызываем базовый TakeHit() для уничтожения блока
            base.TakeHit();
        }
    }

    private void CreateSplitBall(Vector3 position, float speed)
    {
        // Генерируем случайный угол в радианах
        float randomAngle = Random.Range(0f, 2f * Mathf.PI);
        
        // Создаем вектор направления
        Vector2 direction = new Vector2(
            Mathf.Cos(randomAngle),
            Mathf.Sin(randomAngle)
        ).normalized;

        // Применяем скорость и множитель
        Vector2 newVelocity = direction * speed * splitBallSpeedMultiplier;

        // Создаем дочерний мяч через GameManager
        GameManager.Instance.CreateSplitBall(position, newVelocity, splitBallScale);
    }
}
