Agregado dragon de partida y jugador.
Cambiado dora abierto para que no inicie con niguna carta revelada.
This commit is contained in:
parent
d02a29566a
commit
d264f2936a
@ -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,7 +37,8 @@ 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
28
src/juego/Dragon.kt
Normal 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
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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
|
||||
|
@ -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)}}"))
|
||||
}
|
||||
|
@ -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(
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user