rimajon-ktor/src/Juego.kt

57 lines
1.6 KiB
Kotlin
Raw Normal View History

2020-09-21 21:25:21 +00:00
package dev.araozu
2020-09-23 01:20:23 +00:00
import io.ktor.http.cio.websocket.*
2020-09-21 21:25:21 +00:00
2020-09-23 01:20:23 +00:00
class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
2020-09-21 21:25:21 +00:00
2020-09-23 01:20:23 +00:00
private val cartas: Array<Int> = GestorJuegos.generarCartas()
val conexiones: HashMap<String, WebSocketSession> = HashMap()
2020-09-23 01:20:23 +00:00
private val manos: HashMap<String, Mano> = HashMap()
private val dora: ArrayList<Int> = arrayListOf()
var estadoJuego = EstadoJuego.Espera
var posCartaActual = 0
var doraDescubiertos = 1
2020-09-21 21:25:21 +00:00
suspend fun iniciarJuego(ws: WebSocketSession) {
2020-09-23 01:20:23 +00:00
if (estadoJuego != EstadoJuego.Espera) return
2020-09-21 21:25:21 +00:00
if (conexiones.size < 4) {
ws.send(Frame.Text("{\"operacion\": \"error\", \"razon\": \"Usuarios insuficientes\"}"))
return
}
2020-09-23 01:20:23 +00:00
estadoJuego = EstadoJuego.Iniciado
for (i in posCartaActual until (posCartaActual + 10)) {
dora.add(cartas[i])
2020-09-21 21:25:21 +00:00
}
2020-09-23 01:20:23 +00:00
posCartaActual += 10
2020-09-21 21:25:21 +00:00
2020-09-23 01:20:23 +00:00
for ((idUsuario, _) in usuarios) {
val cartasL = arrayListOf<Int>()
2020-09-21 21:25:21 +00:00
2020-09-23 01:20:23 +00:00
for (i in posCartaActual until (posCartaActual + 10)) {
cartasL.add(cartas[i])
2020-09-23 01:20:23 +00:00
}
posCartaActual += 10
2020-09-21 21:25:21 +00:00
val mano = Mano(cartasL)
2020-09-23 01:20:23 +00:00
manos[idUsuario] = mano
2020-09-21 21:25:21 +00:00
}
conexiones.forEach { (_, socket) ->
2020-09-23 01:20:23 +00:00
socket.send(Frame.Text("{\"operacion\": \"juego_iniciado\"}"))
2020-09-21 21:25:21 +00:00
}
2020-09-23 01:20:23 +00:00
conexiones.clear()
println("Parametros del juego creados!")
2020-09-23 01:20:23 +00:00
}
fun agregarConexion(idUsuario: String, conexion: WebSocketSession) {
conexiones[idUsuario] = conexion
2020-09-23 01:20:23 +00:00
}
fun agregarUsuario(idUsuario: String) {
usuarios.add(Pair(idUsuario, true))
2020-09-21 21:25:21 +00:00
}
}