using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class MissileScript : MonoBehaviour
{
#region PROPERTIES
    
    public int TargetId { get; set; }

#endregion
#region VARIABLES

    [SerializeField] private float speed = 15.0f;
    [SerializeField] private GameObject explosion;
    private bool renderSprite;
    private GameHandler _gameHandler;

#endregion
    #region METHODS
    public void Explode()
    {
        StopParticles();
        if (renderSprite)
        {
            var rotation = transform.rotation;
            rotation.z = 180;
            Instantiate(explosion, transform.position, rotation);
        }
        Destroy(gameObject);
        return;
    }

    public void SetRenderSprite(bool render)
    {
        renderSprite = render;
    }

    public void SetTarget(int id)
    {
        TargetId = id;
    }
    public void StopParticles()
    {
        if (transform.childCount == 0) return;
        var emit = transform?.GetChild(0);
        emit.parent = null;

        emit.GetComponent<ParticleSystem>().Stop(true, ParticleSystemStopBehavior.StopEmitting);

        // This finds the particleAnimator associated with the emitter and then
        // sets it to automatically delete itself when it runs out of particles
    }

#endregion
#region LIFECYCLE
    void Start()
    {
        _gameHandler = GameHandler.Instance;
    }


    // Update is called once per frame
    void Update()
    {
        if(transform.position.x < -20)
        {
            StopParticles();
            Destroy(gameObject);
            return;

        }
        //Go up because up is the direction of the head of the missile, even if he goes left the player's POV
        transform.Translate(Vector3.up * (speed+_gameHandler.MapSpeed) * Time.deltaTime);

    }

#endregion
    
}