lap timing publish and store, username store in db
[carveJwlIkooP6JGAAIwe30JlM.git] / network.c
index 96832ae3166c253d15cc58994a442ff9ef740f7c..59982b213c21656f9987491462c977cb196de57c 100644 (file)
--- a/network.c
+++ b/network.c
@@ -205,7 +205,12 @@ static void network_scoreboard_callback( netmsg_request *res, vg_msg *body ){
    if( vg_msg_seekframe( body, "rows" ) ){
       while( vg_msg_seekframe( body, NULL ) ){
          const char *username = vg_msg_getkvstr( body, "username" );
-         sfd_encode( l ++, username );
+
+         if( username )
+            sfd_encode( l ++, username );
+         else
+            sfd_encode( l ++, "UNKNOWN USER" );
+
          vg_msg_skip_frame( body );
       }
    }
@@ -223,7 +228,6 @@ static void network_request_scoreboard( const char *mod_uid,
 
    netmsg_request *req = alloca( sizeof(netmsg_request) + 512 );
    req->inetmsg_id = k_inetmsg_request;
-   req->id = 0; /* TODO: pool allocatable */
 
    vg_msg data;
    vg_msg_init( &data, req->q, 512 );
@@ -234,6 +238,31 @@ static void network_request_scoreboard( const char *mod_uid,
    network_send_request( req, &data, network_scoreboard_callback );
 }
 
+static void network_publish_callback( netmsg_request *res, vg_msg *body ){
+   if( res->status != k_request_status_ok ){
+      vg_error( "Publish laptime, server error #%d\n", (i32)res->status );
+   }
+}
+
+static void network_publish_laptime( const char *mod_uid, 
+                                     const char *route_uid, f64 lap_time ){
+   if( !network_client.remote )
+      return;
+
+   i32 time_centiseconds = lap_time * 100.0;
+
+   netmsg_request *req = alloca( sizeof(netmsg_request) + 512 );
+   req->inetmsg_id = k_inetmsg_request;
+
+   vg_msg data;
+   vg_msg_init( &data, req->q, 512 );
+   vg_msg_wkvstr( &data, "endpoint", "setlap" );
+   vg_msg_wkvstr( &data, "mod", mod_uid );
+   vg_msg_wkvstr( &data, "route", route_uid );
+   vg_msg_wkvi32( &data, "time", time_centiseconds );
+   network_send_request( req, &data, network_publish_callback );
+}
+
 static void network_request_rx_300_400( SteamNetworkingMessage_t *msg ){
    netmsg_blank *tmp = msg->m_pData;