show playernames in debug view
[carveJwlIkooP6JGAAIwe30JlM.git] / gameserver.c
index e2082cb39fc77f82ff2d0664a235b2aad0cfa6f3..ff8d63552384903277721e25b43318b9c76fd847 100644 (file)
@@ -77,7 +77,7 @@ static void gameserver_player_join( int index ){
 
       SteamAPI_ISteamNetworkingSockets_SendMessageToConnection(
             hSteamNetworkingSockets, joiner->connection,
-            &join, sizeof(join), k_nSteamNetworkingSend_Reliable, NULL );
+            &init, sizeof(init), k_nSteamNetworkingSend_Reliable, NULL );
    }
 }
 
@@ -296,29 +296,41 @@ static int packet_minsize( SteamNetworkingMessage_t *msg, u32 size ){
 static void gameserver_rx_200_300( SteamNetworkingMessage_t *msg ){
    netmsg_blank *tmp = msg->m_pData;
 
+   int client_id = gameserver_client_index( msg->m_conn );
+   if( client_id == -1 ) return;
+
    if( tmp->inetmsg_id == k_inetmsg_playerusername ){
       if( !packet_minsize( msg, sizeof(netmsg_playerusername) ))
          return;
       
-      int client_id = gameserver_client_index( msg->m_conn );
-      if( client_id != -1 ){
-         struct gameserver_client *client = &gameserver.clients[ client_id ];
-         netmsg_playerusername *src = msg->m_pData;
-
-         vg_strncpy( src->username, client->username, sizeof(client->username),
-                     k_strncpy_always_add_null );
-
-         /* update other users about this change */
-         netmsg_playerusername msg;
-         memset( &msg, 0, sizeof(msg) );
-         msg.inetmsg_id = k_inetmsg_playerusername;
-         msg.index = client_id;
-         vg_strncpy( client->username, msg.username, sizeof(msg.username),
-                     k_strncpy_always_add_null );
-
-         gameserver_send_to_all( client_id, &msg, sizeof(msg), 
-                                 k_nSteamNetworkingSend_Reliable );
-      }
+      struct gameserver_client *client = &gameserver.clients[ client_id ];
+      netmsg_playerusername *src = msg->m_pData;
+
+      vg_info( "%d change name '%s' -> '%s'\n",
+               client_id, client->username, src->username );
+
+      vg_strncpy( src->username, client->username, sizeof(client->username),
+                  k_strncpy_always_add_null );
+
+      /* update other users about this change */
+      netmsg_playerusername msg;
+      memset( &msg, 0, sizeof(msg) );
+      msg.inetmsg_id = k_inetmsg_playerusername;
+      msg.index = client_id;
+      vg_strncpy( client->username, msg.username, sizeof(msg.username),
+                  k_strncpy_always_add_null );
+
+      gameserver_send_to_all( client_id, &msg, sizeof(msg), 
+                              k_nSteamNetworkingSend_Reliable );
+   }
+   else if( tmp->inetmsg_id == k_inetmsg_playerframe ){
+      /* propogate */
+
+      netmsg_playerframe *frame = alloca(msg->m_cbSize);
+      memcpy( frame, msg->m_pData, msg->m_cbSize );
+      frame->client = client_id;
+      gameserver_send_to_all( client_id, frame, msg->m_cbSize, 
+                              k_nSteamNetworkingSend_Unreliable );
    }
 }