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 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,7 +37,8 @@ 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
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>) {
|
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
|
||||||
|
@ -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)}}"))
|
||||||
}
|
}
|
||||||
|
@ -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(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user