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()
|
2020-09-23 02:11:15 +00:00
|
|
|
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
|
2020-09-23 02:11:15 +00:00
|
|
|
var doraDescubiertos = 1
|
2020-09-21 21:25:21 +00:00
|
|
|
|
2020-09-23 02:11:15 +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
|
|
|
|
2020-09-23 02:11:15 +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) {
|
2020-09-23 02:11:15 +00:00
|
|
|
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)) {
|
2020-09-23 02:11:15 +00:00
|
|
|
cartasL.add(cartas[i])
|
2020-09-23 01:20:23 +00:00
|
|
|
}
|
|
|
|
posCartaActual += 10
|
2020-09-21 21:25:21 +00:00
|
|
|
|
2020-09-23 02:11:15 +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
|
|
|
}
|
|
|
|
|
2020-09-23 02:11:15 +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()
|
2020-09-23 02:11:15 +00:00
|
|
|
println("Parametros del juego creados!")
|
2020-09-23 01:20:23 +00:00
|
|
|
}
|
|
|
|
|
2020-09-23 02:11:15 +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
|
|
|
}
|
|
|
|
|
|
|
|
}
|