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 ordenJugadores: Array<String>,
val turnoActual: String,
val turnosHastaDora: Int
val turnosHastaDora: Int,
val dragonPartida: Dragon
) {
override fun equals(other: Any?): Boolean {
@ -23,6 +24,7 @@ data class DatosJuego(
if (!ordenJugadores.contentEquals(other.ordenJugadores)) return false
if (turnoActual != other.turnoActual) return false
if (turnosHastaDora != other.turnosHastaDora) return false
if (dragonPartida != other.dragonPartida) return false
return true
}
@ -35,6 +37,7 @@ data class DatosJuego(
result = 31 * result + ordenJugadores.contentHashCode()
result = 31 * result + turnoActual.hashCode()
result = 31 * result + turnosHastaDora
result = 31 * result + dragonPartida.hashCode()
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>) {
private val doraCerrado = arrayListOf(cartas[0])
private val doraAbierto = arrayListOf(cartas[5])
private val doraAbierto = arrayListOf<Int>()
private var turnosSigDora = 20
var turnosRestantesDoraCerrado = turnosSigDora // 20 15 10 5
private set

View File

@ -13,6 +13,7 @@ class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
private var estadoJuego = EstadoJuego.Espera
private var posCartaActual = 0
private var turnoActual = 0
private var dragonPartida = Dragon.Negro
suspend fun iniciarJuego(ws: WebSocketSession) {
if (estadoJuego != EstadoJuego.Espera) return
@ -46,15 +47,17 @@ class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
cartasL.add(cartas[j])
}
posCartaActual += 10
val dragonActual = Dragon.get(i)
val mano = if (idJugadorInicial == idUsuario) {
val sigCarta = cartas[posCartaActual]
posCartaActual++
gestorDora!!.actualizarDoraCerrado()
dragonPartida = dragonActual
Mano(cartasL, sigCarta = sigCarta)
Mano(cartasL, sigCarta = sigCarta, dragon = dragonActual)
} else {
Mano(cartasL)
Mano(cartasL, dragon = dragonActual)
}
manos[idUsuario] = mano
@ -87,7 +90,8 @@ class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
108 - posCartaActual,
ordenJugadores,
idJugadorTurnoActual,
gestorDora!!.turnosRestantesDoraCerrado
gestorDora!!.turnosRestantesDoraCerrado,
dragonPartida
)
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 descartes: ArrayList<Int> = arrayListOf(),
var sigCarta: Int = -1,
var oportunidades: ArrayList<Oportunidad> = arrayListOf()
var oportunidades: ArrayList<Oportunidad> = arrayListOf(),
val dragon: Dragon
) {
fun obtenerManoPrivada(): Mano {
@ -18,6 +19,4 @@ data class Mano(
)
}
}