Squashed commit of Chris's networking code
commit 052d5a2ee82d14752ba7a2a89b375de0f4b3214d Author: Chris Peterson <xethm55@yahoo.com> Date: Fri Sep 14 20:49:49 2012 -0400 Damn! - Forgot to add the Types.h file commit 8bb6f6d56279289dd0c1f118dffb390dc6538a7c Author: Chris Peterson <xethm55@yahoo.com> Date: Fri Sep 14 20:41:46 2012 -0400 Fixed a lot of the lag issues. There are still some tweaks needed, but that is going to happen with the input system changes commit 0b5fe2dd64b561d965229a8dff25575eaf5c9264 Author: Chris Peterson <xethm55@yahoo.com> Date: Fri Sep 14 20:21:31 2012 -0400 Client server stuff working. A lot of lag in the system though commit 07fac2c86d3b379fd1ac287bf3f60b778ca59508 Merge: 5cfd5b2ac79196Author: Chris Peterson <xethm55@yahoo.com> Date: Fri Sep 14 17:49:18 2012 -0400 Merging in changes from Holtrop commit 5cfd5b28d5e384803ef7b807849ac570e6c84e0f Author: Chris Peterson <xethm55@yahoo.com> Date: Sun Sep 9 12:23:12 2012 -0400 Building on linux now commit 470d486cdebd95099020911dee7f9290c78ee274 Merge: 842040df072eecAuthor: Chris Peterson <xethm55@yahoo.com> Date: Sun Sep 9 11:58:39 2012 -0400 Merged in master with tank model commit 842040d0fee481f726b2ae5aec60787371af3923 Merge: 6866c589b993f2Author: Chris Peterson <xethm55@yahoo.com> Date: Thu Aug 30 23:25:19 2012 -0400 Merged in changes from upstream (holtrop/master) commit 6866c58200cc50d3ccc886266303c1b654c89527 Author: Chris Peterson <xethm55@yahoo.com> Date: Sat Aug 18 17:07:50 2012 -0400 added server code and a simple echo server.
This commit is contained in:
1 parent
05dc0b021f
commit
24a08e6017
11 files changed
+830
-24
No files matched your search
@@ -0,0 +1,103 @@
|
||||
#include "Server.h"
|
||||
#include "Types.h"
|
||||
#include <math.h>
|
||||
|
||||
Server::Server(sf::Uint16 port)
|
||||
{
|
||||
m_net_server = new Network();
|
||||
m_net_server->Create(port, sf::IpAddress::None);
|
||||
m_player = new Player();
|
||||
m_player->x = 0;
|
||||
m_player->y = 0;
|
||||
m_player->direction = M_PI_2;
|
||||
}
|
||||
|
||||
Server::~Server()
|
||||
{
|
||||
m_net_server->Destroy();
|
||||
}
|
||||
|
||||
void Server::run( void )
|
||||
{
|
||||
double current_time;
|
||||
double elapsed_time;
|
||||
double last_time = 0.0;
|
||||
while(1)
|
||||
{
|
||||
current_time = m_clock.getElapsedTime().asSeconds();
|
||||
elapsed_time = current_time - last_time;
|
||||
update( elapsed_time );
|
||||
last_time = current_time;
|
||||
|
||||
// temporary for now. otherwise this thread consumed way too processing
|
||||
sf::sleep(sf::seconds(0.005)); // 5 milli-seconds
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Server::update( double elapsed_time )
|
||||
{
|
||||
static Player player_prev;
|
||||
const double move_speed = 75.0;
|
||||
sf::Packet server_packet;
|
||||
static sf::Uint8 w_pressed = KEY_NOT_PRESSED;
|
||||
static sf::Uint8 a_pressed = KEY_NOT_PRESSED;
|
||||
static sf::Uint8 s_pressed = KEY_NOT_PRESSED;
|
||||
static sf::Uint8 d_pressed = KEY_NOT_PRESSED;
|
||||
static sf::Int32 rel_mouse_movement = 0;
|
||||
|
||||
m_net_server->Receive();
|
||||
if(m_net_server->getData(server_packet))
|
||||
{
|
||||
server_packet >> w_pressed;
|
||||
server_packet >> a_pressed;
|
||||
server_packet >> s_pressed;
|
||||
server_packet >> d_pressed;
|
||||
server_packet >> rel_mouse_movement;
|
||||
}
|
||||
|
||||
if (KEY_PRESSED == a_pressed)
|
||||
{
|
||||
double direction = m_player->direction + M_PI_2;
|
||||
m_player->x += cos(direction) * move_speed * elapsed_time;
|
||||
m_player->y += sin(direction) * move_speed * elapsed_time;
|
||||
}
|
||||
if (KEY_PRESSED == d_pressed)
|
||||
{
|
||||
double direction = m_player->direction - M_PI_2;
|
||||
m_player->x += cos(direction) * move_speed * elapsed_time;
|
||||
m_player->y += sin(direction) * move_speed * elapsed_time;
|
||||
}
|
||||
if (KEY_PRESSED == w_pressed)
|
||||
{
|
||||
double direction = m_player->direction;
|
||||
m_player->x += cos(direction) * move_speed * elapsed_time;
|
||||
m_player->y += sin(direction) * move_speed * elapsed_time;
|
||||
}
|
||||
if (KEY_PRESSED == s_pressed)
|
||||
{
|
||||
double direction = m_player->direction + M_PI;
|
||||
m_player->x += cos(direction) * move_speed * elapsed_time;
|
||||
m_player->y += sin(direction) * move_speed * elapsed_time;
|
||||
}
|
||||
m_player->direction -= M_PI * 0.5 * rel_mouse_movement / 1000;
|
||||
|
||||
server_packet.clear();
|
||||
|
||||
// Send the player update if there were changes
|
||||
if((player_prev.direction != m_player->direction) ||
|
||||
(player_prev.x != m_player->x) ||
|
||||
(player_prev.y != m_player->y))
|
||||
{
|
||||
server_packet << m_player->direction;
|
||||
server_packet << m_player->x;
|
||||
server_packet << m_player->y;
|
||||
m_net_server->sendData(server_packet);
|
||||
|
||||
player_prev.direction = m_player->direction;
|
||||
player_prev.x = m_player->x;
|
||||
player_prev.y = m_player->y;
|
||||
}
|
||||
|
||||
m_net_server->Transmit();
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
#include "Network.h"
|
||||
#include "Player.h"
|
||||
#include "refptr.h"
|
||||
|
||||
class Server{
|
||||
public:
|
||||
Server(sf::Uint16 port);
|
||||
~Server();
|
||||
void run( void );
|
||||
|
||||
protected:
|
||||
void update(double elapsed_time);
|
||||
refptr<Network> m_net_server;
|
||||
refptr<Player> m_player;
|
||||
sf::Clock m_clock;
|
||||
};
|
||||
+1
-4
@@ -1,6 +1,6 @@
|
||||
|
||||
#include <getopt.h>
|
||||
#include <stdlib.h>
|
||||
#include "Server.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
@@ -24,12 +24,9 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
/* TODO: make this work... */
|
||||
#if 0
|
||||
Server server(port);
|
||||
|
||||
server.run();
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in new issue
Block a user