using Microsoft.MixedReality.Toolkit.Input;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;

public class Envelopes : MonoBehaviour, IMixedRealityTouchHandler
{
    public List<GameObject> uiElements; // Liste f�r alle �bergeordneten UI-Elemente (TextMeshPro und Buttons)
    public GameObject awtrue;
    public GameObject awfalse;
    private Coroutine hideCoroutine; // Coroutine-Referenz zum Verwalten des Timers

    void Start()
    {
        SetElementsVisibility(false); // Initial unsichtbar
        awtrue.active = false;
        awfalse.active = false;
    }

    public void OnTouchStarted(HandTrackingInputEventData eventData)
    {
        // Sichtbar machen
        SetElementsVisibility(true);

        // Bestehende Coroutine stoppen, falls vorhanden
        if (hideCoroutine != null)
        {
            StopCoroutine(hideCoroutine);
        }

        // Neue Coroutine starten
        hideCoroutine = StartCoroutine(HideElementsAfterDelay(10f)); // 10 Sek Verz�gerung
    }

    public void OnTouchCompleted(HandTrackingInputEventData eventData)
    {

    }

    public void OnTouchUpdated(HandTrackingInputEventData eventData) { }

    IEnumerator HideElementsAfterDelay(float delay)
    {
        yield return new WaitForSeconds(delay);
        SetElementsVisibility(false);
    }

    void SetElementsVisibility(bool isVisible)
    {
        foreach (var element in uiElements)
        {
            SetVisibilityRecursive(element, isVisible);
        }
    }

    void SetVisibilityRecursive(GameObject obj, bool isVisible)
    {
        // TextMeshPro-Komponente
        TextMeshPro textMeshPro = obj.GetComponent<TextMeshPro>();
        if (textMeshPro != null)
        {
            textMeshPro.color = new Color(textMeshPro.color.r, textMeshPro.color.g, textMeshPro.color.b, isVisible ? 1.0f : 0.0f);
        }

        // Renderer-Komponente (f�r andere visuelle Elemente)
        Renderer renderer = obj.GetComponent<Renderer>();
        if (renderer != null)
        {
            renderer.enabled = isVisible;
        }

        // Weitere UI-Komponenten 
        var graphic = obj.GetComponent<UnityEngine.UI.Graphic>();
        if (graphic != null)
        {
            graphic.color = new Color(graphic.color.r, graphic.color.g, graphic.color.b, isVisible ? 1.0f : 0.0f);
        }

        // Rekursiv f�r alle Kinderobjekte
        foreach (Transform child in obj.transform)
        {
            SetVisibilityRecursive(child.gameObject, isVisible);
        }
    }
}