Agregado dragon de partida y jugador.

Cambiado dora abierto para que no inicie con niguna carta revelada.
master
Araozu 2020-10-26 09:47:35 -05:00
parent d02a29566a
commit d264f2936a
5 changed files with 43 additions and 9 deletions

View File

@ -7,7 +7,8 @@ data class DatosJuego(
val cartasRestantes: Int, val cartasRestantes: Int,
val ordenJugadores: Array<String>, val ordenJugadores: Array<String>,
val turnoActual: String, val turnoActual: String,
val turnosHastaDora: Int val turnosHastaDora: Int,
val dragonPartida: Dragon
) { ) {
override fun equals(other: Any?): Boolean { override fun equals(other: Any?): Boolean {
@ -23,6 +24,7 @@ data class DatosJuego(
if (!ordenJugadores.contentEquals(other.ordenJugadores)) return false if (!ordenJugadores.contentEquals(other.ordenJugadores)) return false
if (turnoActual != other.turnoActual) return false if (turnoActual != other.turnoActual) return false
if (turnosHastaDora != other.turnosHastaDora) return false if (turnosHastaDora != other.turnosHastaDora) return false
if (dragonPartida != other.dragonPartida) return false
return true return true
} }
@ -35,6 +37,7 @@ data class DatosJuego(
result = 31 * result + ordenJugadores.contentHashCode() result = 31 * result + ordenJugadores.contentHashCode()
result = 31 * result + turnoActual.hashCode() result = 31 * result + turnoActual.hashCode()
result = 31 * result + turnosHastaDora result = 31 * result + turnosHastaDora
result = 31 * result + dragonPartida.hashCode()
return result return result
} }

28
src/juego/Dragon.kt Normal file
View File

@ -0,0 +1,28 @@
package dev.araozu.juego
enum class Dragon {
Negro,
Rojo,
Verde,
Azul;
companion object {
fun get(pos: Int) =
when (pos) {
0 -> Negro
1 -> Rojo
2 -> Verde
3 -> Azul
else -> throw Error("Dragon incorrecto.")
}
fun sigDragon(d: Dragon) =
when (d) {
Negro -> Rojo
Rojo -> Verde
Verde -> Azul
Azul -> Negro
}
}
}

View File

@ -3,7 +3,7 @@ package dev.araozu.juego
class GestorDora(private val cartas: ArrayList<Int>) { class GestorDora(private val cartas: ArrayList<Int>) {
private val doraCerrado = arrayListOf(cartas[0]) private val doraCerrado = arrayListOf(cartas[0])
private val doraAbierto = arrayListOf(cartas[5]) private val doraAbierto = arrayListOf<Int>()
private var turnosSigDora = 20 private var turnosSigDora = 20
var turnosRestantesDoraCerrado = turnosSigDora // 20 15 10 5 var turnosRestantesDoraCerrado = turnosSigDora // 20 15 10 5
private set private set

View File

@ -13,6 +13,7 @@ class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
private var estadoJuego = EstadoJuego.Espera private var estadoJuego = EstadoJuego.Espera
private var posCartaActual = 0 private var posCartaActual = 0
private var turnoActual = 0 private var turnoActual = 0
private var dragonPartida = Dragon.Negro
suspend fun iniciarJuego(ws: WebSocketSession) { suspend fun iniciarJuego(ws: WebSocketSession) {
if (estadoJuego != EstadoJuego.Espera) return if (estadoJuego != EstadoJuego.Espera) return
@ -46,15 +47,17 @@ class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
cartasL.add(cartas[j]) cartasL.add(cartas[j])
} }
posCartaActual += 10 posCartaActual += 10
val dragonActual = Dragon.get(i)
val mano = if (idJugadorInicial == idUsuario) { val mano = if (idJugadorInicial == idUsuario) {
val sigCarta = cartas[posCartaActual] val sigCarta = cartas[posCartaActual]
posCartaActual++ posCartaActual++
gestorDora!!.actualizarDoraCerrado() gestorDora!!.actualizarDoraCerrado()
dragonPartida = dragonActual
Mano(cartasL, sigCarta = sigCarta) Mano(cartasL, sigCarta = sigCarta, dragon = dragonActual)
} else { } else {
Mano(cartasL) Mano(cartasL, dragon = dragonActual)
} }
manos[idUsuario] = mano manos[idUsuario] = mano
@ -87,7 +90,8 @@ class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
108 - posCartaActual, 108 - posCartaActual,
ordenJugadores, ordenJugadores,
idJugadorTurnoActual, idJugadorTurnoActual,
gestorDora!!.turnosRestantesDoraCerrado gestorDora!!.turnosRestantesDoraCerrado,
dragonPartida
) )
ws.send(Frame.Text("{\"operacion\": \"actualizar_datos\", \"datos\": ${gson.toJson(datosJuego)}}")) ws.send(Frame.Text("{\"operacion\": \"actualizar_datos\", \"datos\": ${gson.toJson(datosJuego)}}"))
} }

View File

@ -5,7 +5,8 @@ data class Mano(
val cartasReveladas: ArrayList<ArrayList<Int>> = arrayListOf(), val cartasReveladas: ArrayList<ArrayList<Int>> = arrayListOf(),
val descartes: ArrayList<Int> = arrayListOf(), val descartes: ArrayList<Int> = arrayListOf(),
var sigCarta: Int = -1, var sigCarta: Int = -1,
var oportunidades: ArrayList<Oportunidad> = arrayListOf() var oportunidades: ArrayList<Oportunidad> = arrayListOf(),
val dragon: Dragon
) { ) {
fun obtenerManoPrivada(): Mano { fun obtenerManoPrivada(): Mano {
@ -18,6 +19,4 @@ data class Mano(
) )
} }
} }