using UnityEngine;

public class Projectile2D : MonoBehaviour
{
    public float initialSpeed = 10f; // Αρχική ταχύτητα
    public float launchAngle = 45f;  // Αρχική γωνία βολής (σε μοίρες)
    public Vector2 startPosition;   // Αρχική θέση του βλήματος
    public KeyCode fireKey = KeyCode.Space; // Πλήκτρο για τη βολή
    public KeyCode resetKey = KeyCode.R;    // Πλήκτρο για reset

    private Rigidbody2D rb;
    private bool isLaunched = false; // Έλεγχος αν έχει γίνει η βολή

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();

        // Αποθήκευση της αρχικής θέσης
        startPosition = transform.position;

        // Σταματάμε το Rigidbody από το να πέσει λόγω βαρύτητας
        rb.bodyType = RigidbodyType2D.Static;
    }

    void Update()
    {
        // Όταν πατηθεί το Space, γίνεται η βολή
        if (Input.GetKeyDown(fireKey) && !isLaunched)
        {
            LaunchProjectile();
        }

        // Όταν πατηθεί το R, γίνεται reset
        if (Input.GetKeyDown(resetKey))
        {
            ResetProjectile();
        }
    }

    void LaunchProjectile()
    {
        isLaunched = true;
        rb.bodyType = RigidbodyType2D.Dynamic; // Ενεργοποιούμε ξανά τη φυσική

        // Μετατροπή γωνίας σε ακτίνια
        float angleRad = launchAngle * Mathf.Deg2Rad;

        // Δημιουργία αρχικού διανύσματος ταχύτητας
        Vector2 velocity = new Vector2(Mathf.Cos(angleRad), Mathf.Sin(angleRad)) * initialSpeed;

        // Εφαρμογή της ταχύτητας στο Rigidbody2D
        rb.velocity = velocity;
    }

    void ResetProjectile()
    {
        // Επαναφορά στη θέση εκκίνησης
        transform.position = startPosition;

        // Σταματάμε το Rigidbody και μηδενίζουμε τις ταχύτητες
        rb.bodyType = RigidbodyType2D.Static;
        rb.velocity = Vector2.zero;
        rb.angularVelocity = 0f;

        // Επιτρέπουμε νέα εκτόξευση
        isLaunched = false;
    }
}
