Agregada sig carta a la mano

master
Araozu 2020-09-25 10:10:08 -05:00
parent ebecfaecfb
commit 903d1dfc80
2 changed files with 36 additions and 14 deletions

View File

@ -11,10 +11,10 @@ class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
private val dora: ArrayList<Int> = arrayListOf() private val dora: ArrayList<Int> = arrayListOf()
private val doraPublico = Array(5) {0} private val doraPublico = Array(5) {0}
private val doraOculto = Array(5) {0} private val doraOculto = Array(5) {0}
var estadoJuego = EstadoJuego.Espera private var estadoJuego = EstadoJuego.Espera
var posCartaActual = 0 private var posCartaActual = 0
var cartasRestantes = 58 private var cartasRestantes = 58
val turnoActual = 0 private val turnoActual = 0
suspend fun iniciarJuego(ws: WebSocketSession) { suspend fun iniciarJuego(ws: WebSocketSession) {
if (estadoJuego != EstadoJuego.Espera) return if (estadoJuego != EstadoJuego.Espera) return
@ -32,24 +32,37 @@ class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
doraPublico[0] = dora[0] doraPublico[0] = dora[0]
doraOculto[0] = dora[4] doraOculto[0] = dora[4]
for ((idUsuario, _) in usuarios) { // Asignar orden de jugadores
var i = 0
var idJugadorInicial = ""
conexiones.forEach { (idUsuario, _) ->
if (i == 0) idJugadorInicial = idUsuario
ordenJugadores[i] = idUsuario
i++
val cartasL = arrayListOf<Int>() val cartasL = arrayListOf<Int>()
for (i in posCartaActual until (posCartaActual + 10)) { for (j in posCartaActual until (posCartaActual + 10)) {
cartasL.add(cartas[i]) cartasL.add(cartas[j])
} }
posCartaActual += 10 posCartaActual += 10
val mano = Mano(cartasL) val mano = if (idJugadorInicial == idUsuario) {
val sigCarta = cartas[posCartaActual]
posCartaActual++
Mano(cartasL, sigCarta = sigCarta)
} else {
Mano(cartasL)
}
manos[idUsuario] = mano manos[idUsuario] = mano
} }
var i = 0 conexiones.forEach { (_, socket) ->
conexiones.forEach { (idUsuario, socket) ->
ordenJugadores[i] = idUsuario
i++
socket.send(Frame.Text("{\"operacion\": \"juego_iniciado\"}")) socket.send(Frame.Text("{\"operacion\": \"juego_iniciado\"}"))
} }
conexiones.clear() conexiones.clear()
} }
@ -68,7 +81,15 @@ class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
} }
} }
val datosJuego = DatosJuego(doraPublico, doraOcultoS, manosS, cartasRestantes, ordenJugadores, ordenJugadores[turnoActual]) val idJugadorTurnoActual = ordenJugadores[turnoActual]
val datosJuego = DatosJuego(
doraPublico,
doraOcultoS,
manosS,
cartasRestantes,
ordenJugadores,
idJugadorTurnoActual
)
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 allIn: Boolean = false, val allIn: Boolean = false,
val cartaSig: Int? = null, val cartaSig: Int? = null,
val cartasReveladas: ArrayList<ArrayList<Int>> = ArrayList(), val cartasReveladas: ArrayList<ArrayList<Int>> = ArrayList(),
val descartes: List<Int> = ArrayList() val descartes: List<Int> = ArrayList(),
val sigCarta: Int = -1
) { ) {
fun obtenerManoPrivada(): Mano { fun obtenerManoPrivada(): Mano {