diff --git a/src/GestorJuegos.kt b/src/GestorJuegos.kt index 80d1325..9b5c67a 100644 --- a/src/GestorJuegos.kt +++ b/src/GestorJuegos.kt @@ -82,4 +82,9 @@ object GestorJuegos { juego.manejarDescarte(idUsuario, carta) } + suspend fun manejarIgnorarOportunidad(idJuego: String, idUsuario: String) { + val juego = juegos[idJuego]!! + juego.ignorarOportunidadSeq(idUsuario) + } + } diff --git a/src/JuegoWS.kt b/src/JuegoWS.kt index 9c6c59d..2d28b4d 100644 --- a/src/JuegoWS.kt +++ b/src/JuegoWS.kt @@ -9,6 +9,8 @@ val gson = Gson() data class DatosDescarte(val idJuego: String, val idUsuario: String, val carta: Int) +data class DatosIgnorarOportunidad(val idJuego: String, val idUsuario: String) + fun Routing.juegows() { webSocket("/juego") { @@ -25,6 +27,10 @@ fun Routing.juegows() { val datos = gson.fromJson(sol.datos, DatosDescarte::class.java) GestorJuegos.manejarDescarte(datos.idJuego, datos.idUsuario, datos.carta) } + "ignorar_oportunidad" -> { + val datos = gson.fromJson(sol.datos, DatosIgnorarOportunidad::class.java) + GestorJuegos.manejarIgnorarOportunidad(datos.idJuego, datos.idUsuario) + } } } } diff --git a/src/juego/Juego.kt b/src/juego/Juego.kt index 1dade77..1eba6ce 100644 --- a/src/juego/Juego.kt +++ b/src/juego/Juego.kt @@ -178,4 +178,30 @@ class Juego(val usuarios: ArrayList>) { } } + suspend fun ignorarOportunidadSeq(idUsuario: String) { + + var aunHayOportunidades = false + for ((id, mano) in manos) { + // Eliminar oportunidad del usuario + if (id == idUsuario) { + mano.oportunidades = arrayListOf() + continue + } + + // Si algun otro jugador tiene una oportunidad + if (mano.oportunidades.isNotEmpty()) { + aunHayOportunidades = true + } + } + + // Si no quedan oportunidades cambiar el turno al sig jugador + if (!aunHayOportunidades) { + cambiarTurnoSigJugadorConsecutivo() + gestorDora!!.actualizarDoraCerrado() + } + + // Enviar los nuevos datos + enviarDatosATodos() + } + } diff --git a/src/juego/Oportunidad.kt b/src/juego/Oportunidad.kt index 5c0d527..c72b4ef 100644 --- a/src/juego/Oportunidad.kt +++ b/src/juego/Oportunidad.kt @@ -4,5 +4,4 @@ interface Oportunidad { val cartaDescartada: Int val nombreOportunidad: String - }