src/proto2/NetworkClient.cc
changeset 185 25becd2cb026
parent 184 561892e2a30e
child 186 0738f2949a2b
--- a/src/proto2/NetworkClient.cc	Wed Dec 03 18:59:10 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-
-#include "NetworkClient.hh"
-#include "Engine.hh"
-#include "Logger.hh"
-
-#include <cassert>
-
-NetworkClient::NetworkClient (GameState &state, const NetworkAddress &connect_to) : 
-    NetworkCore(state), netsession(NETWORK_MAGIC_ID), server(netsession.connect(connect_to)), netobjs(netsession, NETCHAN_CORE, server) {
-    
-    // connect slots
-    slots.connect(netobjs.sig_create(), this, &NetworkClient::on_create);
-
-    // XXX: sig_disconnected
-}
-
-void NetworkClient::on_create (NetworkObject_Client *obj, NetworkMessageID msg_id, NetworkPacket &pkt) {
-    switch (msg_id) {
-        case NETMSG_SERVER_HELLO:
-            on_server_hello(obj, pkt);
-
-            break;
-        
-        case NETMSG_PLAYER_INFO:
-            on_player_info(obj, pkt);
-
-            break;
-        
-        case NETMSG_PLAYER_JOIN:
-            on_player_join(obj, pkt);
-
-            break;
-
-        default:
-            Engine::log(WARN, "client.on_create_object") << "unknown msg_id=" << msg_id << " for obj=" << obj;
-    }
-}
-        
-void NetworkClient::on_server_hello (NetworkObject_Client *obj, NetworkPacket &pkt) {
-    // read the packet
-    Vector position = pkt.read_vector();
-    
-    Engine::log(INFO, "client.on_server_hello") << "obj=" << obj << ", pos=" << position;
-
-    // create the LocalPlayer object
-    NetworkClientLocalPlayer *player = new NetworkClientLocalPlayer(*this, obj, position);
-
-    // inform state
-    state.newLocalPlayer(player);
-}
-        
-void NetworkClient::on_player_info (NetworkObject_Client *obj, NetworkPacket &pkt) {
-    // read the packet
-    Vector position = pkt.read_vector();
-    
-    Engine::log(INFO, "client.on_player_info") << "obj=" << obj << ", pos=" << position;
-
-    // create the LocalPlayer object
-    NetworkClientRemotePlayer *player = new NetworkClientRemotePlayer(*this, obj, position);
-
-    // inform state
-    state.newRemotePlayer(player);
-
-}
-        
-void NetworkClient::on_player_join (NetworkObject_Client *obj, NetworkPacket &pkt) {
-    // read the packet
-    Vector position = pkt.read_vector();
-    
-    Engine::log(INFO, "client.on_player_join") << "obj=" << obj << ", pos=" << position;
-    
-    // create the RemotePlayer object
-    NetworkClientRemotePlayer *player = new NetworkClientRemotePlayer(*this, obj, position);
-
-    // inform state
-    state.newRemotePlayer(player);
-}
-        
-void NetworkClient::player_quit (NetworkClientRemotePlayer *player) {
-    // inform state
-    state.removePlayer(player);
-
-    // delete
-    // XXX: leak because deleting the slot while it's being called breaks ClanLib
-    //  delete player;
-}
-
-NetworkClientLocalPlayer::NetworkClientLocalPlayer (NetworkClient &client, NetworkObject_Client *obj, Vector position) :
-    LocalPlayer(client.state, position, true), client(client), obj(obj) {
-    
-    // receive messages
-    slots.connect(obj->sig_message(NETMSG_PLAYER_POSITION), this, &NetworkClientLocalPlayer::on_position);
-}
-        
-void NetworkClientLocalPlayer::handleMove (PlayerInput_Move input) {
-    // always send move, in all cases
-    NetworkPacket pkt;
-    pkt.write_uint16(input);
-
-    obj->send(NETMSG_CLIENT_MOVE, pkt, false);
-    
-    // do not handle locally
-}
-        
-void NetworkClientLocalPlayer::on_position (NetworkPacket &pkt) {
-    Vector position = pkt.read_vector();
-    Vector velocity = pkt.read_vector();
-    uint8_t flags = pkt.read_uint8();
-
-    Engine::log(INFO, "client_player.on_position") << "obj=" << obj << ", position=" << position << ", velocity=" << velocity;
-    
-    // just update... 
-    updatePhysics(position, velocity, flags & NETWORK_PHYSICS_INAIR);
-}
-        
-NetworkClientRemotePlayer::NetworkClientRemotePlayer (NetworkClient &client, NetworkObject_Client *obj, Vector position) :
-    RemotePlayer(client.state, position, true), client(client), obj(obj) {
-    
-    // receive messages
-    slots.connect(obj->sig_message(NETMSG_PLAYER_POSITION), this, &NetworkClientRemotePlayer::on_position);
-    slots.connect(obj->sig_message(NETMSG_PLAYER_QUIT), this, &NetworkClientRemotePlayer::on_quit);
-}
-
-void NetworkClientRemotePlayer::on_position (NetworkPacket &pkt) {
-    Vector position = pkt.read_vector();
-    Vector velocity = pkt.read_vector();
-    uint8_t flags = pkt.read_uint8();
-
-    Engine::log(INFO, "client_player.on_position") << "obj=" << obj << ", position=" << position << ", velocity=" << velocity;
-    
-    // just update... 
-    updatePhysics(position, velocity, flags & NETWORK_PHYSICS_INAIR);
-}
-
-void NetworkClientRemotePlayer::on_quit (NetworkPacket &pkt) {
-    // pkt is empty
-    (void) pkt;
-
-    Engine::log(INFO, "client_player.on_quit") << "obj=" << obj;
-
-    client.player_quit(this);
-}
-