80 lines
2.1 KiB
C#
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
|
|
}
|
|
}
|
|
}
|