using UnityEngine;

public class MapMovment : MonoBehaviour
{
    //Animaciona kriva menja kako se sprite ponasa tokom vremena
    public AnimationCurve MovementCurve;

    Vector3 StartLocation;
    Vector3 TargetLocation;
    float timer = 0;

   
    bool Ready = true;

 
    void Update()
    {
        // reaguje na kliktaj misa na mapi
        if (Input.GetMouseButtonUp(0))
        {
            // prevodjenje pocetne lokacije u prostor sveta
            StartLocation = transform.position.ToVector3_2D();
            timer = 0;
            // prevodjenje ciljne lokacije u prostor sveta
            TargetLocation = WorldExtension.GetScreenPositionFor2D(Input.mousePosition);
            // setuje indikator da je igrac spreman da se krece
            Ready = true;
        }
        else if ( Input.touchCount > 0)
        {
            // prevodjenje pocetne lokacije u prostor sveta
            StartLocation = transform.position.ToVector3_2D();
            timer = 0;
            // prevodjenje ciljne lokacije u prostor sveta
            TargetLocation = WorldExtension.GetScreenPositionFor2D(Input.GetTouch(0).position);
            // setuje indikator da je igrac spreman da se krece
            Ready = true;
        }
        // provera uslova za pokretanja igraca od pocetne do ciljen lokacije
        if (TargetLocation != Vector3.zero && TargetLocation != transform.position && TargetLocation != StartLocation && Ready)
        {
            // pokretanje igraca na mapi
            transform.position = Vector3.Lerp(StartLocation, TargetLocation, timer);
          
            timer += Time.deltaTime;
        }
      
       
    }

    void OnCollisionEnter2D(Collision2D col)
    {
        // prilikom kontakta sa tackom na mapi zaustavlja kretanje
        Ready = false;
    }

    void Awake()
    {
        var lastPosition = GameState.GetLastScenePosition
            (Application.loadedLevelName);
        if (lastPosition != Vector3.zero)
        {
            transform.position = lastPosition;
        }
    }

    void OnDestroy()
    {
        GameState.SetLastScenePosition
            (Application.loadedLevelName, transform.position);
    }
}

