diff --git a/src/juego/DatosJuego.kt b/src/juego/DatosJuego.kt index f984f89..4f699ec 100644 --- a/src/juego/DatosJuego.kt +++ b/src/juego/DatosJuego.kt @@ -1,8 +1,8 @@ package dev.araozu.juego data class DatosJuego( - val dora: Array, - val doraOculto: Array, + val dora: ArrayList, + val doraOculto: ArrayList, val manos: HashMap, val cartasRestantes: Int, val ordenJugadores: Array, @@ -16,21 +16,25 @@ data class DatosJuego( other as DatosJuego - if (!dora.contentEquals(other.dora)) return false - if (!doraOculto.contentEquals(other.doraOculto)) return false + if (dora != other.dora) return false + if (doraOculto != other.doraOculto) return false if (manos != other.manos) return false if (cartasRestantes != other.cartasRestantes) return false if (!ordenJugadores.contentEquals(other.ordenJugadores)) return false + if (turnoActual != other.turnoActual) return false + if (turnosHastaDora != other.turnosHastaDora) return false return true } override fun hashCode(): Int { - var result = dora.contentHashCode() - result = 31 * result + doraOculto.contentHashCode() + var result = dora.hashCode() + result = 31 * result + doraOculto.hashCode() result = 31 * result + manos.hashCode() result = 31 * result + cartasRestantes result = 31 * result + ordenJugadores.contentHashCode() + result = 31 * result + turnoActual.hashCode() + result = 31 * result + turnosHastaDora return result } diff --git a/src/juego/GestorDora.kt b/src/juego/GestorDora.kt index 06ce313..e5942fc 100644 --- a/src/juego/GestorDora.kt +++ b/src/juego/GestorDora.kt @@ -8,20 +8,12 @@ class GestorDora(private val cartas: ArrayList) { var turnosRestantesDoraCerrado = turnosSigDora // 32 16 8 4 private set - operator fun component1(): Array { - val numDora = doraCerrado.size - return Array(5) { - if (it < numDora) doraCerrado[it] - else 0 - } + operator fun component1(): ArrayList { + return doraCerrado } - operator fun component2(): Array { - val numDora = doraCerrado.size - return Array(5) { - if (it < numDora) doraAbierto[it] - else 0 - } + operator fun component2(): ArrayList { + return doraAbierto } fun actualizarDoraCerrado() { diff --git a/src/juego/Juego.kt b/src/juego/Juego.kt index c75733d..e8d2c04 100644 --- a/src/juego/Juego.kt +++ b/src/juego/Juego.kt @@ -139,7 +139,10 @@ class Juego(val usuarios: ArrayList>) { // Verificar seq/tri/quad/win var hayOportunidades = false - for ((_, mano) in manos) { + for ((idUsuarioActual, mano) in manos) { + // No buscar oportunidades en el usuario que acaba de descartar. + if (idUsuarioActual == idUsuario) continue + val oportunidadSeq = OportunidadSeq.verificar(carta, mano.cartas) if (oportunidadSeq != null) { hayOportunidades = true diff --git a/src/juego/Mano.kt b/src/juego/Mano.kt index 6503610..7e274c8 100644 --- a/src/juego/Mano.kt +++ b/src/juego/Mano.kt @@ -13,7 +13,8 @@ data class Mano( l.addAll(cartas.map { 0 }) return this.copy( cartas = l, - sigCarta = if (sigCarta != -1) 0 else sigCarta + sigCarta = if (sigCarta != -1) 0 else sigCarta, + oportunidades = arrayListOf() ) }