diff --git a/js/buscadorSala.js b/js/buscadorSala.js
index c258d97..47e0730 100644
--- a/js/buscadorSala.js
+++ b/js/buscadorSala.js
@@ -3,6 +3,43 @@ let usuarioYaEstaEnEquipo = false;
$(document).ready(function () {
comprobarSalaUsuario();
});
+// ==========================================================================
+// DETECTOR DE INICIO DE PARTIDA PARA JUGADORES INVITADOS (1 VS 1)
+// ==========================================================================
+$(document).ready(function () {
+ // Solo activamos el vigilante si estamos en la página del buscador de salas
+ if (window.location.pathname.includes("buscadorSala.php")) {
+ setInterval(function () {
+ // 1. Preguntamos al servidor en qué partida está metido el usuario actual
+ $.ajax({
+ url: "controladores/controladorEquipoxUsuario.php",
+ type: "POST",
+ dataType: "json",
+ data: { orden: "obtenerSalaUsuario" },
+ success: function (sala) {
+ // Si el usuario está metido en una sala/partida activa...
+ if (sala.asociado && sala.idPartida) {
+ // 2. Comprobamos si el anfitrión ya ha iniciado esa partida concreta
+ $.ajax({
+ url: "controladores/controladorPartida.php",
+ type: "POST",
+ dataType: "json",
+ data: { orden: "buscar", idPartida: sala.idPartida },
+ success: function (partida) {
+ // Si 'fechaInicio' ya no es null, significa que el host le dio a "Jugar"
+ if (partida && partida.fechaInicio !== null) {
+ // Redirigimos instantáneamente al invitado a la pantalla del juego
+ window.location.href =
+ "juego.php?idPartida=" + sala.idPartida;
+ }
+ },
+ });
+ }
+ },
+ });
+ }, 2000); // Comprueba el estado de la partida automáticamente cada 2 segundos
+ }
+});
// 1. Comprobar si el usuario actual ya pertenece a una sala
function comprobarSalaUsuario() {
@@ -179,12 +216,12 @@ function mostrarSala(partida, equipos, jugadores) {
// Solo el host puede iniciar la partida
if (esHost) {
+ // Así debe renderizarse el botón del host dentro de tu función mostrarSala() para que el AJAX funcione:
botonIniciarHTML = `
-
- ¡Iniciar Partida!
-
- `;
+
+`;
}
accionesSalaHTML = `
@@ -266,7 +303,8 @@ let botonAbandonarReferencia = null;
$(document).on("click", ".btn-abandonar-sala", function () {
botonAbandonarReferencia = $(this);
- const esHost = $(this).data("es-host") === true || $(this).data("es-host") === "true";
+ const esHost =
+ $(this).data("es-host") === true || $(this).data("es-host") === "true";
const titulo = $("#modalAbandonarSalaLabel");
const mensaje = $("#modalAbandonarSalaMensaje");
const botonConfirmar = $("#btnConfirmarAbandonar");
@@ -279,9 +317,7 @@ $(document).on("click", ".btn-abandonar-sala", function () {
botonConfirmar.text("Sí, abandonar");
} else {
titulo.text("¿Abandonar la sala?");
- mensaje.text(
- "Si sales de la sala, perderás tu lugar en el equipo.",
- );
+ mensaje.text("Si sales de la sala, perderás tu lugar en el equipo.");
botonConfirmar.text("Sí, salir");
}
@@ -292,7 +328,6 @@ $(document).on("click", ".btn-abandonar-sala", function () {
modal.show();
});
-
// B. Al hacer clic en "Sí, salir" dentro del modal Kahoot
$(document).on("click", "#btnConfirmarAbandonar", function () {
const modalEl = document.getElementById("modalAbandonarSala");
@@ -403,6 +438,7 @@ $("#btnCrearSala").on("click", function () {
if (respuesta.exito) {
$("#modalCrearSala").modal("hide");
+
location.reload();
}
},
@@ -433,3 +469,22 @@ $(document).on("input", ".input-kahoot", function () {
$(this).removeClass("is-invalid");
$(this).next(".mensaje-error-sala").remove();
});
+
+$(document).on("click", "#btnInicioJuego", function () {
+ // 1. Capturamos el id de la partida de forma dinámica desde el botón que se ha pulsado
+ const idPartida = $(this).data("id-partida");
+
+ // 2. Enviamos la petición AJAX adecuada con TODOS los datos que el controlador espera recibir
+ $.ajax({
+ url: "controladores/controladorPartida.php",
+ type: "POST",
+ dataType: "json",
+ data: {
+ orden: "iniciar",
+ idPartida: idPartida,
+ },
+ error: function (error) {
+ console.error("Error al iniciar el juego por AJAX:", error);
+ },
+ });
+});