using UnityEngine;

public class SplitBall : Ball
{
    public void Initialize(Vector2 velocity, float scale)
    {
        // Получаем компоненты
        rb = GetComponent<Rigidbody2D>();
        
        // Устанавливаем случайный цвет
        SpriteRenderer spriteRenderer = GetComponent<SpriteRenderer>();
        if (spriteRenderer != null)
        {
            // Генерируем случайный цвет с прозрачностью
            Color randomColor = Random.ColorHSV(0f, 1f, 0.7f, 1f, 0.7f, 1f);
            randomColor.a = Random.Range(0.3f, 0.5f); // Устанавливаем случайную прозрачность
            spriteRenderer.color = randomColor;
        }
        
        // Устанавливаем физические свойства
        rb.collisionDetectionMode = CollisionDetectionMode2D.Continuous;
        rb.angularVelocity = 0f;
        rb.gravityScale = 0f;
        rb.interpolation = RigidbodyInterpolation2D.Interpolate;
        rb.constraints = RigidbodyConstraints2D.FreezeRotation;
        rb.sharedMaterial = new PhysicsMaterial2D
        {
            bounciness = 1f,
            friction = 0f
        };
        
        // Устанавливаем масштаб
        transform.localScale *= scale;
        
        // Запрещаем создавать новые мячи
        canSpawnBalls = false;
        
        // Сразу запускаем мяч с заданной скоростью
        isPlaying = true;
        rb.velocity = velocity;
        lastFrameVelocity = velocity;
    }

    protected override void Start()
    {
        // Не выполняем стандартную инициализацию Ball,
        // так как дочерний мяч не должен следовать за платформой
    }

    protected override void Update()
    {
        // Поддерживаем постоянную скорость без изменения направления
        if (rb != null && rb.velocity.magnitude != speed)
        {
            rb.velocity = rb.velocity.normalized * speed;
            lastFrameVelocity = rb.velocity;
        }
    }

    protected override void OnCollisionEnter2D(Collision2D collision)
    {
        // Вызываем базовую реализацию для обработки отскоков
        base.OnCollisionEnter2D(collision);
    }

    private Vector2 AddRandomness(Vector2 direction, float intensity)
    {
        float randomAngle = Random.Range(-intensity, intensity) * 90f;
        float rad = randomAngle * Mathf.Deg2Rad;
        float cos = Mathf.Cos(rad);
        float sin = Mathf.Sin(rad);
        
        return new Vector2(
            direction.x * cos - direction.y * sin,
            direction.x * sin + direction.y * cos
        ).normalized;
    }
}
