diff --git a/src/server/cliente.cpp b/src/server/cliente.cpp index 089249ff..feafc200 100644 --- a/src/server/cliente.cpp +++ b/src/server/cliente.cpp @@ -18,6 +18,21 @@ Cliente::Cliente(Socket&& socket, std::vector mapasDisponibles, }; //Esto corre en un thread +/* + obtener pedido + if pedido == mapa: + *enviarMapas + *recibirMapaSeleccionado + Creo partida (y lo uno) + *envioConfirmacion con idPartida / envioError si no pude creala + else: + *enviarPartidas + *recibirPartidaSeleccionada + lo uno + *envioConfirmacion con idPartida / envioError si no pude creala + + me vuelvo jugador +*/ void Cliente::elegirPartida() { //Paso 1: Envio los mapas this->protocolo.enviarMapas(this->mapasDisponibles); diff --git a/src/server/protocolo.cpp b/src/server/protocolo.cpp index b88155d2..3de1ac8b 100644 --- a/src/server/protocolo.cpp +++ b/src/server/protocolo.cpp @@ -29,6 +29,22 @@ std::vector Protocolo::obtenerVector() { return partidas; } +void Protocolo::pedirInformacion(tipoInfo infoAPedir) { + int8_t pedidoAEnviar[2] = {PEDIDO, (int8_t)infoAPedir}; + + bool was_closed = false; + socket.sendall((char*)pedidoAEnviar, sizeof(pedidoAEnviar), &was_closed); + // TODO: verificar +} + +tipoInfo Protocolo::obtenerPedido() { + int8_t pedidoARecibir[2] = {0}; + bool was_closed = false; + socket.recvall(pedidoARecibir, sizeof(pedidoARecibir), &was_closed); + // TODO: verificar + return (tipoInfo)pedidoARecibir[1]; +} + std::vector Protocolo::obtenerPartidas() { int8_t codigo = obtenerCodigo(); // TODO: verificar (codigo) @@ -167,8 +183,6 @@ id Protocolo::obtenerMapaDeseado() { } id Protocolo::obtenerPartidaDeseada() { - //Tenemos que ponernos de acuerdo en que devolver cuando el cliente - //elige crear una partida nueva int8_t codigo = obtenerCodigo(); // TODO: verificar return obtenerId(); @@ -192,9 +206,6 @@ void Protocolo::enviarError() { Direccion Protocolo::recibirAccion() { - //int8_t codigo = MOV; - //id idGusano = htonl(gusano); - //int8_t dir = direccion; int8_t codigo; bool was_closed = false; diff --git a/src/server/protocolo.h b/src/server/protocolo.h index 097414e9..9fb9f783 100644 --- a/src/server/protocolo.h +++ b/src/server/protocolo.h @@ -12,16 +12,18 @@ //TODO Poner todos los types defs en un header file juntos typedef int32_t id; enum Direccion {IZQUIERDA, DERECHA, SALTO, PIRUETA}; +enum tipoInfo {PARTIDA, MAPA}; #define PARTIDAS 1 #define MAPAS 2 #define CREAR 3 #define UNIRSE 4 -#define EXITO 5 -#define ERROR 6 +#define PEDIDO 5 +#define EXITO 6 +#define ERROR 7 // Codigos para acciones // mov + direccion -> izq, der, salto, pirueta -#define MOV 7 +#define MOV 8 struct RepresentacionPartida { id ID; @@ -37,8 +39,10 @@ class Protocolo { std::vector vectorListoParaEnviar(std::vector vectorAEnviar); id verificarConexion(); public: - // Pongo estas para que compile nomas. Ponele el nombre/encaralas de - // la forma que te parezca + + void pedirInformacion(tipoInfo infoAPedir); + tipoInfo obtenerPedido(); + // METODOS DEL CLIENTE std::vector obtenerPartidas(); std::vector obtenerMapas(); id crearPartida(id mapaSeleccionado); @@ -47,7 +51,7 @@ class Protocolo { void enviarMapas(std::vector mapasDisponibles); - // void enviarPartidas(TSList partidasDisponibles); + // METODOS DEL SERVER void enviarPartidas(std::vector partidasDisponibles); id obtenerMapaDeseado(); [[nodiscard]] id obtenerPartidaDeseada();