+ item, sizeof(netmsg_playeritem)+chs+1,
+ k_nSteamNetworkingSend_Reliable, NULL );
+}
+
+static void network_disconnect(void){
+ SteamAPI_ISteamNetworkingSockets_CloseConnection(
+ hSteamNetworkingSockets, network_client.remote, 0, NULL, 0 );
+ network_client.remote = 0;
+ network_client.state = k_ESteamNetworkingConnectionState_None;
+
+ for( int i=0; i<vg_list_size(netplayers.list); i++ ){
+ netplayers.list[i].active = 0;
+ }
+}
+
+static void network_status_string( vg_str *str, u32 *colour ){
+ if( steam_ready ){
+ if( network_client.user_intent == k_server_intent_offline ){
+ vg_strcat( str, "Offline" );
+ }
+ else {
+ ESteamNetworkingConnectionState state = network_client.state;
+
+ if( state == k_ESteamNetworkingConnectionState_None )
+ vg_strcat( str, "No Connection" );
+ else if( state == k_ESteamNetworkingConnectionState_Connecting ){
+ vg_strcat( str, "Connecting to:\nskaterift.com" );
+
+ if( network_client.retries ){
+ vg_strcat( str, "\n(" );
+ vg_strcati32( str, network_client.retries );
+ vg_strcat( str, " retries)" );
+ }
+ }
+ else if( state == k_ESteamNetworkingConnectionState_Connected ){
+ vg_strcat( str, "Connected to:\nskaterift.com" );
+ *colour = 0xff00a020;
+ }
+ else if( state == k_ESteamNetworkingConnectionState_ClosedByPeer )
+ vg_strcat( str, "Connection Closed" );
+ else if( state == k_ESteamNetworkingConnectionState_FindingRoute )
+ vg_strcat( str, "Finding Route" );
+ else if( state ==
+ k_ESteamNetworkingConnectionState_ProblemDetectedLocally){
+ vg_strcat( str, "Problem Detected\nLocally" );
+ *colour = 0xff0000a0;
+ }
+ else
+ vg_strcat( str, "???" );
+ }
+ }
+ else {
+ vg_strcat( str, "Steam Offline" );
+ *colour = 0xff0000a0;
+ }