Agregado codigo para aceptar solicitudes de iniciar el juego, y establecer las cartas del juego iniciado.
This commit is contained in:
parent
ea4c05c15e
commit
806247ce56
@ -42,7 +42,7 @@ object GestorJuegos {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun broadcast(juego: Juego, mensaje: String) {
|
private suspend fun broadcast(juego: Juego, mensaje: String) {
|
||||||
juego.conexiones.forEach { socket ->
|
juego.conexiones.forEach { (_, socket) ->
|
||||||
socket.send(Frame.Text(mensaje))
|
socket.send(Frame.Text(mensaje))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -61,9 +61,18 @@ object GestorJuegos {
|
|||||||
str += "{\"idUsuario\": \"$idUsuarioAct\", \"nombreUsuario\": \"$nombreUsuarioAct\"}"
|
str += "{\"idUsuario\": \"$idUsuarioAct\", \"nombreUsuario\": \"$nombreUsuarioAct\"}"
|
||||||
}
|
}
|
||||||
str += "]"
|
str += "]"
|
||||||
juego.agregarConexion(ws)
|
juego.agregarConexion(idUsuario, ws)
|
||||||
juego.agregarUsuario(idUsuario)
|
juego.agregarUsuario(idUsuario)
|
||||||
ws.send(Frame.Text("{\"operacion\": \"conexion_exitosa\", \"jugadores\": $str}"))
|
ws.send(Frame.Text("{\"operacion\": \"conexion_exitosa\", \"jugadores\": $str}"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suspend fun iniciarJuego(idJuego: String, ws: WebSocketSession) {
|
||||||
|
val juego = juegos[idJuego]
|
||||||
|
if (juego != null) {
|
||||||
|
juego.iniciarJuego(ws)
|
||||||
|
} else {
|
||||||
|
ws.send(Frame.Text("{\"operacion\": \"error\", \"razon\": \"Juego invalido\"}"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
23
src/Juego.kt
23
src/Juego.kt
@ -5,15 +5,21 @@ import io.ktor.http.cio.websocket.*
|
|||||||
class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
|
class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
|
||||||
|
|
||||||
private val cartas: Array<Int> = GestorJuegos.generarCartas()
|
private val cartas: Array<Int> = GestorJuegos.generarCartas()
|
||||||
val conexiones: ArrayList<WebSocketSession> = arrayListOf()
|
val conexiones: HashMap<String, WebSocketSession> = HashMap()
|
||||||
private val manos: HashMap<String, Mano> = HashMap()
|
private val manos: HashMap<String, Mano> = HashMap()
|
||||||
private val dora: ArrayList<Int> = arrayListOf()
|
private val dora: ArrayList<Int> = arrayListOf()
|
||||||
var estadoJuego = EstadoJuego.Espera
|
var estadoJuego = EstadoJuego.Espera
|
||||||
var posCartaActual = 0
|
var posCartaActual = 0
|
||||||
|
var doraDescubiertos = 1
|
||||||
|
|
||||||
suspend fun iniciarJuego() {
|
suspend fun iniciarJuego(ws: WebSocketSession) {
|
||||||
if (estadoJuego != EstadoJuego.Espera) return
|
if (estadoJuego != EstadoJuego.Espera) return
|
||||||
|
|
||||||
|
if (conexiones.size < 4) {
|
||||||
|
ws.send(Frame.Text("{\"operacion\": \"error\", \"razon\": \"Usuarios insuficientes\"}"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
estadoJuego = EstadoJuego.Iniciado
|
estadoJuego = EstadoJuego.Iniciado
|
||||||
for (i in posCartaActual until (posCartaActual + 10)) {
|
for (i in posCartaActual until (posCartaActual + 10)) {
|
||||||
dora.add(cartas[i])
|
dora.add(cartas[i])
|
||||||
@ -21,25 +27,26 @@ class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
|
|||||||
posCartaActual += 10
|
posCartaActual += 10
|
||||||
|
|
||||||
for ((idUsuario, _) in usuarios) {
|
for ((idUsuario, _) in usuarios) {
|
||||||
val cartas = ArrayList<Int>()
|
val cartasL = arrayListOf<Int>()
|
||||||
|
|
||||||
for (i in posCartaActual until (posCartaActual + 10)) {
|
for (i in posCartaActual until (posCartaActual + 10)) {
|
||||||
cartas.add(cartas[i])
|
cartasL.add(cartas[i])
|
||||||
}
|
}
|
||||||
posCartaActual += 10
|
posCartaActual += 10
|
||||||
|
|
||||||
val mano = Mano(cartas)
|
val mano = Mano(cartasL)
|
||||||
manos[idUsuario] = mano
|
manos[idUsuario] = mano
|
||||||
}
|
}
|
||||||
|
|
||||||
conexiones.forEach { socket ->
|
conexiones.forEach { (_, socket) ->
|
||||||
socket.send(Frame.Text("{\"operacion\": \"juego_iniciado\"}"))
|
socket.send(Frame.Text("{\"operacion\": \"juego_iniciado\"}"))
|
||||||
}
|
}
|
||||||
conexiones.clear()
|
conexiones.clear()
|
||||||
|
println("Parametros del juego creados!")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun agregarConexion(conexion: WebSocketSession) {
|
fun agregarConexion(idUsuario: String, conexion: WebSocketSession) {
|
||||||
conexiones.add(conexion)
|
conexiones[idUsuario] = conexion
|
||||||
}
|
}
|
||||||
|
|
||||||
fun agregarUsuario(idUsuario: String) {
|
fun agregarUsuario(idUsuario: String) {
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
package dev.araozu
|
package dev.araozu
|
||||||
|
|
||||||
class Mano(cartas: ArrayList<Int>)
|
class Mano(cartas: ArrayList<Int>) {
|
||||||
|
|
||||||
|
val allIn: Boolean = false
|
||||||
|
val cartaSig: Int? = null
|
||||||
|
val cartasReveladas: ArrayList<ArrayList<Int>> = ArrayList()
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -22,6 +22,10 @@ fun Routing.wsjuego() {
|
|||||||
val datos2 = gson.fromJson(datos.datos, ConexionNueva::class.java)
|
val datos2 = gson.fromJson(datos.datos, ConexionNueva::class.java)
|
||||||
GestorJuegos.conectarASala(datos2.idJuego, datos2.idUsuario, this)
|
GestorJuegos.conectarASala(datos2.idJuego, datos2.idUsuario, this)
|
||||||
}
|
}
|
||||||
|
"iniciar" -> {
|
||||||
|
val datos2 = gson.fromJson(datos.datos, ConexionNueva::class.java)
|
||||||
|
GestorJuegos.iniciarJuego(datos2.idJuego, this)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user