diff --git a/src/client/Client.cc b/src/client/Client.cc index a3e9a6e..cfa4e73 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -85,7 +85,8 @@ void Client::update(double elapsed_time) m_net_client->Receive(); client_packet.clear(); - if(m_net_client->getData(client_packet)) + // Handle all received data (only really want the latest) + while(m_net_client->getData(client_packet)) { // Update player position as calculated from the server. client_packet >> m_player->direction; @@ -103,29 +104,29 @@ void Client::update(double elapsed_time) sf::Uint8 s_pressed = KEY_NOT_PRESSED; sf::Uint8 d_pressed = KEY_NOT_PRESSED; sf::Int32 rel_mouse_movement = 0; - if (sf::Keyboard::isKeyPressed(sf::Keyboard::A)) - { - a_pressed = KEY_PRESSED; - } - if (sf::Keyboard::isKeyPressed(sf::Keyboard::D)) - { - d_pressed = KEY_PRESSED; - } - if (sf::Keyboard::isKeyPressed(sf::Keyboard::W)) - { - w_pressed = KEY_PRESSED; - } - if (sf::Keyboard::isKeyPressed(sf::Keyboard::S)) - { - s_pressed = KEY_PRESSED; - } - rel_mouse_movement = sf::Mouse::getPosition(*m_window).x - m_width / 2; - // This is a fix so that the mouse will not move outside the window and + // This is a fix so that the mouse will not move outside the window and // cause the user to click on another program. // Note: Does not work well with fast movement. if(client_has_focus) { + if (sf::Keyboard::isKeyPressed(sf::Keyboard::A)) + { + a_pressed = KEY_PRESSED; + } + if (sf::Keyboard::isKeyPressed(sf::Keyboard::D)) + { + d_pressed = KEY_PRESSED; + } + if (sf::Keyboard::isKeyPressed(sf::Keyboard::W)) + { + w_pressed = KEY_PRESSED; + } + if (sf::Keyboard::isKeyPressed(sf::Keyboard::S)) + { + s_pressed = KEY_PRESSED; + } + rel_mouse_movement = sf::Mouse::getPosition(*m_window).x - m_width / 2; sf::Mouse::setPosition(sf::Vector2i(m_width / 2, m_height / 2), *m_window); } diff --git a/src/server/Server.cc b/src/server/Server.cc index 8950fcf..5aa4323 100644 --- a/src/server/Server.cc +++ b/src/server/Server.cc @@ -47,7 +47,8 @@ void Server::update( double elapsed_time ) static sf::Int32 rel_mouse_movement = 0; m_net_server->Receive(); - if(m_net_server->getData(server_packet)) + // Handle all received data (only really want the latest) + while(m_net_server->getData(server_packet)) { server_packet >> w_pressed; server_packet >> a_pressed;