Files
ImaageQ_Unity_App/Assets/Rendering/Scripts/BackButtonHandler.cs
Ignacio Gómez Puga 5847d844a5 Removed TOTU 103
2025-03-04 12:04:52 -06:00

80 lines
2.1 KiB
C#

using Assets.Resources.Scripts.Constants;
using UnityEngine;
using UnityEngine.SceneManagement;
public class BackButtonHandler : MonoBehaviour
{
private bool isExitPromptVisible = false;
public GameObject exitPromptUI; // Una referencia a un panel de UI para confirmar la salida
void Start()
{
if (exitPromptUI != null)
{
exitPromptUI.SetActive(false); // Desactivar el panel al inicio
}
}
// Update is called once per frame
void Update()
{
// Detecta si el botón "back" es presionado
if (Input.GetKeyDown(KeyCode.Escape))
{
HandleBackButton();
}
}
// Método que maneja la lógica del botón "back"
void HandleBackButton()
{
string currentScene = SceneManager.GetActiveScene().name;
if (currentScene == ScreenNames.AR)
{
// Si estamos en la escena AR, cargar la escena principal
SceneManager.LoadScene(ScreenNames.Main);
}
else if (currentScene == ScreenNames.Main)
{
// Si ya estamos en la escena principal, preguntar si quiere salir
if (isExitPromptVisible)
{
// Si el cuadro de confirmación ya está visible, salir de la aplicación
Application.Quit();
}
else
{
// Mostrar el cuadro de confirmación para salir
ShowExitPrompt();
}
}
}
// Mostrar el cuadro de confirmación para salir
private void ShowExitPrompt()
{
isExitPromptVisible = true;
if (exitPromptUI != null)
{
exitPromptUI.SetActive(true); // Mostrar el panel de confirmación
}
}
// Llamar a este método si el usuario confirma la salida
public void ConfirmExit()
{
Application.Quit();
}
// Llamar a este método si el usuario cancela la salida
public void CancelExit()
{
isExitPromptVisible = false;
if (exitPromptUI != null)
{
exitPromptUI.SetActive(false); // Ocultar el panel de confirmación
}
}
}