using UnityEngine;

public class WindController : MonoBehaviour
{
    [Header("settings větru")]
    [Tooltip("Maximální síla větru (kladná i záporná)")]
    public float maxWindTorque = 8f;

    [Tooltip("Jak rychle se větr mění směrem/sílou")]
    public float windChangeSpeed = 0.6f;

    [Tooltip("Jak často se objeví silnější vichřice (v sekundách)")]
    public float gustInterval = 4f;

    [Tooltip("Multiplier pro sílu vichřice")]
    public float gustMultiplier = 2.0f;

    public float CurrentWindTorque { get; private set; }

    private float targetTorque;
    private float gustTimer;

    void Start()
    {
        PickNewTargetTorque();
        gustTimer = gustInterval;
    }

    void Update()
    {
        // Smoothly move wind toward target torque
        CurrentWindTorque = Mathf.Lerp(CurrentWindTorque, targetTorque, Time.deltaTime * windChangeSpeed);

        // Occasional gusts
        gustTimer -= Time.deltaTime;
        if (gustTimer <= 0f)
        {
            // Apply a short gust by shifting target torque more aggressively
            float gust = Random.Range(-maxWindTorque, maxWindTorque) * gustMultiplier;
            targetTorque = Mathf.Clamp(gust, -maxWindTorque * gustMultiplier, maxWindTorque * gustMultiplier);

            gustTimer = gustInterval;
            Invoke(nameof(PickNewTargetTorque), 0.8f); // gust lasts ~0.8s
        }
    }

    private void PickNewTargetTorque()
    {
        targetTorque = Random.Range(-maxWindTorque, maxWindTorque);
    }
}
