using UnityEngine;
using UnityEngine.UI; // Για το UI
using TMPro;

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; // Έλεγχος αν έχει γίνει η βολή

    public Text messageText1; // Αναφορά στο UI κείμενο
    public TMP_Text messageText;
    void Start()
    {
        rb = GetComponent<Rigidbody2D>();

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

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

        // Βρίσκουμε το Text από το UI
        if (messageText != null)
        {
            messageText.gameObject.SetActive(true); // Εμφάνιση αρχικά
        }
    }

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

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

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

        // Απόκρυψη του μηνύματος
        if (messageText != null)
        {
            messageText.gameObject.SetActive(false);
        }

        // Μετατροπή γωνίας σε ακτίνια
        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;

        // Εμφάνιση μηνύματος ξανά
        if (messageText != null)
        {
            messageText.gameObject.SetActive(true);
        }
    }

    void OnBecameInvisible()
    {
        if (isLaunched)
        {
            ResetProjectile();
        }
    }
}
