diff --git a/src/juego/ContenedorGrupos.kt b/src/juego/ContenedorGrupos.kt index 278c788..34ce8ab 100644 --- a/src/juego/ContenedorGrupos.kt +++ b/src/juego/ContenedorGrupos.kt @@ -60,6 +60,6 @@ class ContenedorGrupos( tris.size + seqs.size + (if (pares.size <= 1) 1 else 0) - huerfanos.size fun estaListo(): Boolean = - pares.size == 1 && huerfanos.size == 0 + pares.size == 1 && huerfanos.size == 0 && (tris.size + seqs.size == 3) } diff --git a/src/juego/Juego.kt b/src/juego/Juego.kt index 760a19f..734cdf7 100644 --- a/src/juego/Juego.kt +++ b/src/juego/Juego.kt @@ -120,9 +120,14 @@ class Juego(val usuarios: ArrayList>) { posCartaActual++ // Asignar nueva carta - manos[idSigUsuario]!!.sigCarta = sigCarta + val manoSigJugador = manos[idSigUsuario]!! + manoSigJugador.sigCarta = sigCarta - // TODO: Verificar tsumo + // TODO: Arreglar. Roto. + val oportunidadWin = OportunidadWin.verificar(sigCarta, manoSigJugador.cartas, manoSigJugador.cartasReveladas) + if (oportunidadWin != null) { + manoSigJugador.oportunidades.add(oportunidadWin) + } } @@ -203,6 +208,7 @@ class Juego(val usuarios: ArrayList>) { } } + // TODO: Usar diferente metodo para ignorar oportunidad Tsumo suspend fun ignorarOportunidadSeq(idUsuario: String) { var aunHayOportunidades = false @@ -213,6 +219,7 @@ class Juego(val usuarios: ArrayList>) { continue } + // TODO: Notificar al jugador que su oportunidad ha sido ignorada // Si algun otro jugador tiene una oportunidad if (mano.oportunidades.isNotEmpty()) { aunHayOportunidades = true diff --git a/src/juego/yaku/Yaku.kt b/src/juego/yaku/Yaku.kt index 2798176..08715f4 100644 --- a/src/juego/yaku/Yaku.kt +++ b/src/juego/yaku/Yaku.kt @@ -41,7 +41,8 @@ fun obtenerListaYakus(contenedorGrupos: ContenedorGrupos, esManoAbierta: Boolean || contenedorGrupos.pares.size != 1 || contenedorGrupos.huerfanos.size != 0 ) { - throw Error("Error de invariante: Se intento verificar los yakus de un contenedor invalido.") + System.err.println("Error de invariante: Se intento verificar los yakus de un contenedor invalido.") + return arrayListOf() } // 15 puntos