test network 4
[carveJwlIkooP6JGAAIwe30JlM.git] / player_remote.c
index 606337987948e4aafb5a8ef25f2bdb7172e4ffa7..69f148fb8cfa2e51d2756138a6f4184532933ff1 100644 (file)
@@ -27,6 +27,11 @@ static void player_remote_rx_200_300( SteamNetworkingMessage_t *msg ){
          /* TODO: interpret the uids */
          player->board_view_slot = 0;
          player->playermodel_view_slot = 0;
+
+         vg_strncpy( playerjoin->username, player->username, 
+                     sizeof(player->username), k_strncpy_always_add_null );
+
+         vg_info( "#%u joined with name: %s\n", player->username );
       }
       else {
          vg_error( "inetmsg_playerjoin: player index out of range\n" );
@@ -40,6 +45,7 @@ static void player_remote_rx_200_300( SteamNetworkingMessage_t *msg ){
          struct network_player *player = &netplayers.list[ playerleave->index ];
          player_remote_unwatch( player );
          player->active = 0;
+         vg_info( "player leave (%d)\n", playerleave->index );
       }
       else {
          vg_error( "inetmsg_playerleave: player index out of range\n" );
@@ -75,7 +81,12 @@ static void remote_player_network_imgui(void){
    struct { enum ESteamNetworkingConnectionState state; const char *str; }
    states[] = {
           { k_ESteamNetworkingConnectionState_None, "None" },
-          { k_ESteamNetworkingConnectionState_Connecting, "Connecting" },
+          { k_ESteamNetworkingConnectionState_Connecting, 
+         (const char *[]){"Connecting -",
+                          "Connecting /",
+                          "Connecting |",
+                          "Connecting \\",
+                          }[(u32)(vg.time_real/0.25) & 0x3 ] },
           { k_ESteamNetworkingConnectionState_FindingRoute, "Finding Route" },
           { k_ESteamNetworkingConnectionState_Connected, "Connected" },
           { k_ESteamNetworkingConnectionState_ClosedByPeer, "Closed by peer" },
@@ -94,19 +105,24 @@ static void remote_player_network_imgui(void){
    snprintf( buf, 512, "Network: %s", netstatus );
    ui_info( panel, buf );
    ui_info( panel, "---------------------" );
-   ui_info( panel, "#-1: localplayer" );
 
-   for( u32 i=0; i<vg_list_size(netplayers.list); i++ ){
-      struct network_player *player = &netplayers.list[i];
-      if( player->active ){
-         const char *sysname = "invalid";
+   if( network_client.state == k_ESteamNetworkingConnectionState_Connected ){
+      ui_info( panel, "#-1: localplayer" );
+      for( u32 i=0; i<vg_list_size(netplayers.list); i++ ){
+         struct network_player *player = &netplayers.list[i];
+         if( player->active ){
+            const char *sysname = "invalid";
 
-         if( (player->subsystem >= 0) && 
-             (player->subsystem < k_player_subsystem_max) ){
-            sysname = player_subsystems[ player->subsystem ]->name;
+            if( (player->subsystem >= 0) && 
+                (player->subsystem < k_player_subsystem_max) ){
+               sysname = player_subsystems[ player->subsystem ]->name;
+            }
+            snprintf( buf, 512, "#%u: %s [%s]", i, player->username, sysname );
+            ui_info( panel, buf );
          }
-         snprintf( buf, 512, "#%u: %s [%s]", i, player->username, sysname );
-         ui_info( panel, buf );
       }
    }
+   else {
+      ui_info( panel, "offline" );
+   }
 }