//Evento Juego: Solicitud de comenzar void Servidor::on_evento_juego_solicitudcomenzar(const CL_NetGameEvent &e, UsuarioServidor *usuario) { CL_String nombre = e.get_argument(0); cl_log_event("eventos", "Cliente solicito comenzar juego"); CL_String mensaje= "Se conecto " + usuario->nombre_usuario; mundo->AgregarCadenaChat(mensaje); int id_nuevo = mundo->tanques.size(); enviaratodosEx(CL_NetGameEvent("Juego-Msj",mensaje),id_nuevo); //Enviar a todos que se conecto alquien CL_Vec2f pospawn = mundo->agregarTanque(id_nuevo,DEFAULT,nombre,false,false); //agrega el usuario //Devuelve el id_actual usuario->enviar_evento(CL_NetGameEvent("Juego-Comenzar",pospawn.x,pospawn.y,id_nuevo, nombre, mundo->getActualSubID())); //envia el SpawnPoint al usuario //enviaratodosEx(CL_NetGameEvent("Juego-AgregarTanque",pospawn.x,pospawn.y,id_nuevo, nombre), id_nuevo); //envia el SpawnPoint al usuario //Envia los tanques creados std::list<Tanque *>::iterator it; for(it=mundo->tanques.begin(); it != mundo->tanques.end(); ++it) { CL_NetGameEvent evento("Juego-JugadorConectado",(*it)->getID(),(*it)->getPos().x,(*it)->getPos().y //Envia al usuario todos los tanques ,(*it)->getanguloCuerpo(),(*it)->getAnguloTorreta()); evento.add_argument((*it)->getNombre()); //usuario->enviar_evento(evento); //actuales enviaratodos(evento); } mundo->quitarTodosPowerup(); //enviaratodosEx(CL_NetGameEvent("Juego-JugadorConectado",usuario->id,pospawn.x,pospawn.y,(*final)->getanguloCuerpo() //Envia a todos el nuevo tanque // ,(*final)->getAnguloTorreta()),usuario->id); }
// Successfully connected to server void Client::on_connected() { cl_log_event("network", "Connected to server"); // For demonstration purposes, lets fail a login network_client.send_event(CL_NetGameEvent("Login", "")); // We will receive an error event for this, as we don't send a proper user name // Properly login network_client.send_event(CL_NetGameEvent("Login", "my user name")); }
//Cliente Desconectado void Servidor::on_cliente_desconectado(CL_NetGameConnection *conexion) { cl_log_event("Red", "Cliente Desconectado"); UsuarioServidor *usuario = UsuarioServidor::get_usuario(conexion); CL_String mensaje = "Se desconecto " + usuario->nombre_usuario; mundo->AgregarCadenaChat(mensaje); enviaratodos(CL_NetGameEvent("Juego-Msj",mensaje)); enviaratodos(CL_NetGameEvent("Juego-JugadorDesconectado",usuario->id)); mundo->quitarTanque(usuario->id); Usuarios.remove(usuario); }
void ServerLobbyGame::set_state(State state) { this->state = state; if(state == playing) server->get_network_server()->send_event(CL_NetGameEvent(STC_LOBBY_GAME_STARTED, id)); }
// "Login-Success" event was received void Client::on_event_login_success(const CL_NetGameEvent &e) { cl_log_event("events", "Login success"); logged_in = true; network_client.send_event(CL_NetGameEvent("Game-RequestStart")); }
//Evento Login: Completado void Cliente::on_evento_login_completado(const CL_NetGameEvent &e) { cl_log_event("eventos", "Login Completado"); logged_in = true; cliente_red.send_event(CL_NetGameEvent("Juego-Comenzar", mundo->getTanqueJugador()->getNombre())); }
void Server::login(ServerPlayer *player, CL_String player_name) { cl_log_event("system", "Client logged in"); if (player->id == 0) // player not logged in { player->id = next_player_id++; player->name = player_name; player->send_event(CL_NetGameEvent(STC_LOGIN_SUCCESSFUL, player->id)); lobby_model->players.create_player(player, player_name); } else { player->send_event(CL_NetGameEvent(STC_LOGIN_FAILED, "Already logged in")); } }
//Evento Login: Recibido void Servidor::on_evento_login(const CL_NetGameEvent &e, UsuarioServidor *usuario) { cl_log_event("eventos", "Cliente solicita login"); int numusuarios = Usuarios.size(); /* if(numusuarios < (numjugadores -1) ) { CL_String idlogin = e.get_argument(0); CL_String password = e.get_argument(1); CL_String nombre_usuario = e.get_argument(2); CL_SqliteConnection bd_conexion("bdjuego.sql3"); CL_DBCommand consulta_login = bd_conexion.create_command("SELECT password FROM Usuarios WHERE id=?1"); consulta_login.set_input_parameter_string(1,idlogin); CL_DBReader reader = bd_conexion.execute_reader(consulta_login); CL_String pas_bd; if(reader.retrieve_row()) { pas_bd = reader.get_column_string(0); if(password.compare(pas_bd)==0) //Password Correcto { usuario->nombre_usuario= nombre_usuario; usuario->id = siguiente_usuario_id++; Usuarios.push_back(usuario); usuario->enviar_evento(CL_NetGameEvent("Login-Completado")); } else //Clave Incorrecta { usuario->enviar_evento(CL_NetGameEvent("Login-Fallado", "Clave Incorrecta")); } } else { usuario->enviar_evento(CL_NetGameEvent("Login-Fallado", "ID No encontrado")); //ID Incorrecto } reader.close(); } else { usuario->enviar_evento(CL_NetGameEvent("Login-ServidorLleno")); } */ CL_String idlogin = e.get_argument(0); CL_String password = e.get_argument(1); CL_String nombre_usuario = e.get_argument(2); usuario->nombre_usuario= nombre_usuario; usuario->id = siguiente_usuario_id++; Usuarios.push_back(usuario); usuario->enviar_evento(CL_NetGameEvent("Login-Completado")); }
void Servidor::on_evento_juego_mensajechat(const CL_NetGameEvent &e, UsuarioServidor *usuario) { cl_log_event("eventos", "Mensaje recibido"); CL_String mensaje = e.get_argument(0); enviaratodosEx(CL_NetGameEvent("Juego-Msj",mensaje),usuario->id); //Envia a todos -1 el mensaje recibido mundo->AgregarCadenaChat(mensaje); }
//Evento Juego: Actualiza Posiciones void Servidor::actualiza_saludyscore() { cl_log_event("eventos", "Actualizar Salud y Score"); std::list<Tanque *>::iterator it; for(it=mundo->tanques.begin(); it != mundo->tanques.end(); ++it) enviaratodos(CL_NetGameEvent("Juego-ActualizarSaludyScore",(*it)->getID(),(*it)->getVida(),(*it)->getArmadura() ,(*it)->getScore())); //actuales [todos excepto a mi] }
void LoginEvents::on_event_login_successful(const CL_NetGameEvent &e) { int player_id = e.get_argument(0); client->set_state(Client::in_lobby); client->set_player_id(player_id); // TODO; move this to lobby code client->get_network_client()->send_event(CL_NetGameEvent(CTS_LOBBY_GET_AVAILABLE_GAMES)); }
// "Login" event was received void Server::on_event_login(const CL_NetGameEvent &e, ServerUser *user) { cl_log_event("events", "Client requested login"); CL_String user_name = e.get_argument(0); if(user_name.length() == 0) { user->send_event(CL_NetGameEvent("Login-Fail", "Missing user name")); } else { // Assign name and id to User object (created when user connected earlier) user->user_name = user_name; user->id = next_user_id++; user->send_event(CL_NetGameEvent("Login-Success")); } }
//Evento Juego: Actualiza Posiciones void Servidor::actualiza_posiciones() { cl_log_event("eventos", "Actualizar Posiciones"); std::list<Tanque *>::iterator it; for(it=mundo->tanques.begin(); it != mundo->tanques.end(); ++it) enviaratodos(CL_NetGameEvent("Juego-ActualizarPosiciones",(*it)->getID(),(*it)->getPos().x ,(*it)->getPos().y //Envia al usuario todos los tanques ,(*it)->getanguloCuerpo(),(*it)->getAnguloTorreta())); //actuales [todos excepto a mi] }
void CarState::parseEvent(const CL_NetGameEvent &p_event) { assert(p_event.get_name() == EVENT_CAR_STATE); m_name = p_event.get_argument(0); m_serialData = CL_NetGameEvent(""); const int argCount = static_cast<signed>(p_event.get_argument_count()); for (int i = 1; i < argCount; ++i) { m_serialData.add_argument(p_event.get_argument(i)); } }
void Servidor::on_evento_juego_actualizar_mouse(const CL_NetGameEvent &e, UsuarioServidor *usuario) { cl_log_event("eventos", "Actualizar Mouse"); //int numarg = e.get_argument_count(); int id_tanque = e.get_argument(0); mundo->teclatanquedown(id_tanque,CL_KEY_SPACE); //Dispara enviaratodosEx(CL_NetGameEvent("Juego-ActualizarMouse",id_tanque),usuario->id); //Envia a todos -1 el actualizar mouse /* else if(numarg==2) //Mover mouse { float x=e.get_argument(0),y=e.get_argument(1); mundo->getTanqueID(usuario->id)->setTargetPosTorreta(CL_Vec2f(x,y)); this->enviaratodosEx(CL_NetGameEvent("Juego-ActualizarMouse",usuario->id,x,y),usuario->id); //Envia a todos -1 el actualizar mouse } */ }
void Servidor::on_evento_juego_actualizar_teclado(const CL_NetGameEvent &e, UsuarioServidor *usuario) { cl_log_event("eventos", "Actualizar Teclado"); int tipo = e.get_argument(0); int tecla = e.get_argument(1); if(tipo==0) // Tecla Down { mundo->teclatanquedown(usuario->id,tecla); } else if(tipo==1) //Tecla Up { mundo->teclatanqueup(usuario->id,tecla); } enviaratodosEx(CL_NetGameEvent("Juego-ActualizarTeclado",usuario->id,tipo,tecla),usuario->id); //Envia a todos -1 el actualizar teclado }
void ServerLobbyPlayerCollection::remove_player(ServerLobbyPlayer *lobby_player) { if(lobby_player) { // Remove player from lobby game he has joined if (lobby_player->get_current_game()) lobby_player->get_current_game()->remove_player(lobby_player); // Remove player from player list std::vector<ServerLobbyPlayer *>::iterator it; it = find(players.begin(), players.end(), lobby_player); if (it != players.end()) players.erase(it); server->send_event(CL_NetGameEvent(STC_LOBBY_PLAYER_LOGGED_OUT, lobby_player->get_id())); delete lobby_player; } }
// "Game-RequestStartGame" event was received void Server::on_event_game_requeststart(const CL_NetGameEvent &e, ServerUser *user) { cl_log_event("events", "Client requested game start"); if(game_running == false) { game_running = true; CL_String map_name = "Map1"; int max_players = 6; CustomType position(143,22,3); CL_NetGameEvent loadMapEvent("Game-LoadMap"); loadMapEvent.add_argument(map_name); loadMapEvent.add_argument(max_players); loadMapEvent.add_argument(position); network_server.send_event(loadMapEvent); network_server.send_event(CL_NetGameEvent("Game-Start")); } }
//Evento Juego: Actualiza Tiempo void Servidor::actualiza_tiempo() { cl_log_event("eventos", "Actualizar Tiempo"); enviaratodos(CL_NetGameEvent("Juego-ActualizarTiempo", mundo->getReloj().x, mundo->getReloj().y)); }
//Conexion satistactoria void Cliente::on_conectado() { cl_log_event("red", "Conectado al servidor"); cliente_red.send_event(CL_NetGameEvent("Login",idlogin,password,mundo->getNombreJugador())); }
//Conexion satistactoria void Cliente::actualiza_posiciones() { Tanque *tank = mundo->getTanqueJugador(); cliente_red.send_event(CL_NetGameEvent("Juego-ActualizarPosiciones", tank->getID(), tank->getPos().x, tank->getPos().y, tank->getanguloCuerpo(), tank->getAnguloTorreta())); }
void ServerLobbyGame::send_game_info(ServerLobbyPlayer *destination_player) { destination_player->send_event( CL_NetGameEvent(STC_LOBBY_GAME_INFO, get_id(), get_name(), get_map_name(), get_max_players(), get_state())); }
void ServerLobbyGame::send_game_info() { server->get_network_server()->send_event( CL_NetGameEvent(STC_LOBBY_GAME_INFO, get_id(), get_name(), get_map_name(), get_max_players(), get_state())); }
void Servidor::otorga_powerup(int id_tanque, int id_power) { cl_log_event("eventos", "Otorga Powerup"); enviaratodos(CL_NetGameEvent("Juego-OtorgaPowerup", id_tanque, id_power)); }
void Servidor::quitaTodosPowerup() { cl_log_event("eventos", "Quita Todos Powerup"); enviaratodos(CL_NetGameEvent("Juego-QuitaTodosPowerup")); //actuales [todos excepto a mi] }
void Servidor::matar_tanque(int id, int tiempofin) { cl_log_event("eventos", "Matar Tanque"); enviaratodos(CL_NetGameEvent("Juego-MatarTanque", id, tiempofin)); }
void Servidor::agrega_powerup(int tipo, float x, float y) { cl_log_event("eventos", "Agregar Powerup"); enviaratodos(CL_NetGameEvent("Juego-AgregaPowerup", tipo, x, y)); }
void ServerGameEvents::on_event_game_add_message(const CL_NetGameEvent &e, ServerGame *game, ServerGamePlayer *game_player) { CL_String message = e.get_argument(0); if(message.length() > 0) server->get_network_server()->send_event(CL_NetGameEvent(STC_GAME_PLAYER_MESSAGE, game_player->player->id, message)); }
void Servidor::actualiza_SubID(int id_tanque) { cl_log_event("eventos", "Actualizar SubID"); enviaratodos(CL_NetGameEvent("Juego-ActualizarSubID",mundo->getActualSubID(),id_tanque)); //actuales [todos excepto a mi] }
void Servidor::matar_misil(int id_asesino) { cl_log_event("eventos", "Matar Misil"); enviaratodos(CL_NetGameEvent("Juego-MatarMisil", id_asesino)); }