﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// Classe générique pour savoir si un cube est en zone de dépot ou sélectionnable ou idle, portée par un Ocube
// Post: estSelectionnable = true ssi le cube est sélectionnable suivant la distance euclidienne
//       estSelectionnable = true => cube rouge
//       estEnZoneDepot = true ssi le cube est dans la zone de dépôt suivant la distance euclidienne (methodSelect = EclidDist) ou si le cube rentre en collision avec la zone de dépôt Zone Dépôt (methodSelect = Trigger)
//       estEnZoneDepot = true => cube vert
public class EtatCubeTP2 : MonoBehaviour
{
    public enum EtatCubeEnum { Sélectionnable, Sélectionné, EnZoneDépôt, Idle }
    public EtatCubeEnum etatCube;
    public SelectionnableDistScriptTP2scene3 scriptSelectionnableDist;
    public EnZoneDepotDist scriptEnZoneDepotDist;
    public GameObject Tcube;
    public ToColor tocolor;

    public bool estSelectionnable;
    public bool estSelectionne;
    public bool estEnZoneDepot;
    // Start is called before the first frame update
    void Awake()
    {
        scriptSelectionnableDist = GetComponent<SelectionnableDistScriptTP2scene3>();
        scriptEnZoneDepotDist = GetComponent<EnZoneDepotDist>();
        estSelectionnable = false;
        estSelectionne = false;
        estEnZoneDepot = false;
    }

    //-----------------------------------------
    // Post: Etat du cube dans { En Zone Dépôt, Sélectionné, Sélectionnable, Idle}
    public EtatCubeEnum DonneEtat()
    {
        return etatCube;
    }

    //------------------------------------------
    // Update is called once per frame
    void Update()
    {
        if (transform.parent != null)
        {
            if (transform.parent.name == "Otool")
            {
                estSelectionne = true;
                estSelectionnable = false;
                estEnZoneDepot = false;
                tocolor.SetColor(Color.grey);
                etatCube = EtatCubeEnum.Sélectionné;
            }
            else
                estSelectionne = false;
        }
        else
        {
            estSelectionnable = scriptSelectionnableDist.EstSelectionnable;
            estEnZoneDepot = scriptEnZoneDepotDist.estEnZoneDepot;

            if (estEnZoneDepot == true)
            {
                estSelectionnable = false;
                estSelectionne = false;
                tocolor.SetColor(Color.green);
                etatCube = EtatCubeEnum.EnZoneDépôt;
            }
            else if (estSelectionnable == true)
            {
                estSelectionne = false;
                estEnZoneDepot = false;
                tocolor.SetColor(Color.red);
                etatCube = EtatCubeEnum.Sélectionnable;
            }
            else
            {
                estSelectionnable = false;
                estSelectionne = false;
                estEnZoneDepot = false;
                tocolor.SetColor(Color.grey);
                etatCube = EtatCubeEnum.Idle;
            }
        }
    }
}
