src/proto2/NetworkServer.cc
branchno-netsession
changeset 35 e21cfda0edde
parent 26 5685602aeb9c
child 36 785d220fc6b7
--- a/src/proto2/NetworkServer.cc	Mon Nov 10 21:58:38 2008 +0000
+++ b/src/proto2/NetworkServer.cc	Tue Nov 18 22:58:50 2008 +0000
@@ -48,7 +48,7 @@
 }
         
 NetworkServerPlayer::NetworkServerPlayer (NetworkServer &server, CL_NetComputer &computer, uint16_t pid) : 
-    RemotePlayer(server.state, Coordinate(100, 100), true), server(server), computer(computer), obj(&server.netobjs), pid(pid) {
+    RemotePlayer(server.state, Vector(PLAYER_INITIAL_X, PLAYER_INITIAL_Y), true), server(server), computer(computer), obj(&server.netobjs), pid(pid) {
     
     // log
     Engine::log(INFO, "server_player.connected") << "computer=" << computer << ", obj=" << obj;
@@ -58,8 +58,7 @@
 
     // the initial NETMSG_PLAYER_HELLO
     CL_NetPacket hello_pkt;
-    hello_pkt.output.write_uint32(position.x);
-    hello_pkt.output.write_uint32(position.y);
+    writeVector(hello_pkt, position);
 
     obj.send(computer, NETMSG_SERVER_HELLO, hello_pkt, true);
 
@@ -71,8 +70,7 @@
         // player is not in players list yet
         assert(player != this);
 
-        player_pkt.output.write_uint32(player->position.x);
-        player_pkt.output.write_uint32(player->position.y);
+        writeVector(player_pkt, player->position);
 
         player->obj.send(computer, NETMSG_PLAYER_INFO, player_pkt, true);
     }
@@ -95,17 +93,13 @@
     if (!(from == computer))
         return;
     
-    // read packet
-    int32_t dx = pkt.input.read_int32();
-    int32_t dy = pkt.input.read_int32();
+    Vector impulse_force = readVector(pkt);    
+    uint16_t impulse_ms = pkt.input.read_uint16();
 
-    // movement delta
-    PositionDelta delta(dx, dy);
-
-    Engine::log(INFO, "server_player.on_move") << "obj=" << obj << ", old_pos=" << position << ", delta=" << delta;
-
-    // apply movement
-    position += delta;
+    Engine::log(INFO, "server_player.on_move") << "obj=" << obj << ", old_pos=" << position << ", impulse=" << impulse_force << "@" << impulse_ms << "ms";
+    
+    // apply force
+    applyForce(impulse_force, impulse_ms);
 
     // send position update
     send_position_update();
@@ -113,10 +107,10 @@
         
 void NetworkServerPlayer::send_position_update (void) {
     CL_NetPacket pkt;
-    pkt.output.write_uint32(position.x);
-    pkt.output.write_uint32(position.y);
+    writeVector(pkt, position);
+    writeVector(pkt, velocity);
 
-    Engine::log(INFO, "server_player.send_position_update") << "obj=" << obj << " -> " << position;
+    Engine::log(INFO, "server_player.send_position_update") << "obj=" << obj << " -> " << position << "+" << velocity;
 
     obj.send(server.netsession.get_all(), NETMSG_PLAYER_POSITION, pkt, false);
 }