SteamAPI_ISteamNetworkingSockets_SendMessageToConnection(
hSteamNetworkingSockets, joiner->connection,
- &join, sizeof(join), k_nSteamNetworkingSend_Reliable, NULL );
+ &init, sizeof(init), k_nSteamNetworkingSend_Reliable, NULL );
}
}
k_nSteamNetworkingSend_Reliable, NULL );
}
+static void network_disconnect(void){
+ SteamAPI_ISteamNetworkingSockets_CloseConnection(
+ hSteamNetworkingSockets, network_client.remote, 0, NULL, 0 );
+ network_client.remote = 0;
+
+ for( int i=0; i<vg_list_size(netplayers.list); i++ ){
+ netplayers.list[i].active = 0;
+ }
+}
+
static void on_server_connect_status( CallbackMsg_t *msg ){
SteamNetConnectionStatusChangedCallback_t *info = (void *)msg->m_pubParam;
vg_info( " Connection status changed for %lu\n", info->m_hConn );
k_ESteamNetConnectionEnd_Remote_Max ){
network_client.retries = 40;
}
-
- SteamAPI_ISteamNetworkingSockets_CloseConnection(
- hSteamNetworkingSockets, info->m_hConn, 0, NULL, 0 );
- network_client.remote = 0;
+ network_disconnect();
}
else if( info->m_info.m_eState ==
k_ESteamNetworkingConnectionState_ProblemDetectedLocally ){
- SteamAPI_ISteamNetworkingSockets_CloseConnection(
- hSteamNetworkingSockets, info->m_hConn, 0, NULL, 0 );
- network_client.remote = 0;
+ network_disconnect();
}
}
else{
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" },
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( (player->subsystem >= 0) &&
- (player->subsystem < k_player_subsystem_max) ){
- sysname = player_subsystems[ player->subsystem ]->name;
+ 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;
+ }
+ 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" );
+ }
}