﻿using UnityEngine;
using UnityEngine.UI;

public class Boat : MonoBehaviour {

    // Info for movement.
    public float turnSpeed = 1000f;
    public float turnSpeedRotate = 40;
    public float accellerateSpeed = 1000f;
    public Rigidbody Rb { get; private set; }
    Vector3 startPos;

    // Pickups info.
   
    private int m_mapCounter = 0;

    // Infos for moving our sail.
    Cloth sail;
    [SerializeField]
    float sailSensitivity = 800;

    public static Boat instance;
    private void Awake()
    {
        instance = this;
        sail = GetComponentInChildren<Cloth>();
        Rb = GetComponent<Rigidbody>();
    }

    void Start()
    {
        startPos = transform.position;
    }

    void Update()
    {
        // Don't move if the rigidbody can't move.
        if (Rb.isKinematic)
            return;

        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");

        //Rb.AddTorque(0f, h * turnSpeed * Time.deltaTime, 0f);
        transform.Rotate(Vector3.up, Time.deltaTime * turnSpeedRotate * h);
        Rb.AddForce(transform.forward * v * accellerateSpeed * Time.deltaTime);

        // Correct position & rotation.
        transform.position = new Vector3(transform.position.x, startPos.y, transform.position.z);
        transform.eulerAngles = Vector3.Scale(Vector3.up, transform.eulerAngles);
    }

    void OnTriggerEnter(Collider other)
    {
        // Handle pickups.
        if (other.GetComponent<Pick_Item>() != null) // recupérer component que l'on veut ( rigibody etc ... )
        {
           
            other.gameObject.SetActive(false);

            Pick_Up_Affichage.instance.afficheObject(other.GetComponent<Pick_Item>().type);
            m_mapCounter++;

            if (m_mapCounter > 2)
                PlayManager.instance.allMapsCollected = true;
        }
    }

    public void MoveCloth(Vector3 windDirection)
    {
        // Set acceleration of our sail according to the wind.
        sail.externalAcceleration = windDirection.normalized * sailSensitivity;
    }
}