X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=network.c;fp=network.c;h=ecd85878a60c0b8cc8931abfa9428bfa898920b9;hb=9723ed75d4da703c91603d251816ce476a1e9098;hp=8833d19caf704b5d8cdc9585a60d374aee8c58ce;hpb=dd7d6eb0702cd9a0c97ab6da9ec577af0b797b88;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/network.c b/network.c index 8833d19..ecd8587 100644 --- a/network.c +++ b/network.c @@ -6,6 +6,7 @@ #include "world.h" #include "world_sfd.h" #include "world_routes.h" +#include "vg/vg_imgui.h" static void scores_update(void); @@ -277,6 +278,71 @@ static void network_disconnect(void){ } } +static void render_server_status_gui(void){ + render_fb_bind( gpipeline.fb_workshop_preview, 0 ); + + /* HACK */ + vg_ui.cur_vert = 0; + vg_ui.cur_indice = 0; + vg_ui.vert_start = 0; + vg_ui.indice_start = 0; + + ui_rect r = { 0, 0, 128, 48 }; + + char buf[128]; + vg_str str; + vg_strnull( &str, buf, sizeof(buf) ); + + u32 bg = 0xff000000; + + 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" ); + bg = 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" ); + bg = 0xff0000a0; + } + else + vg_strcat( &str, "???" ); + } + } + else { + vg_strcat( &str, "No Steam Connection" ); + bg = 0xff0000a0; + } + + ui_fill( r, bg ); + ui_text( r, buf, 1, k_ui_align_center, 0 ); + ui_flush( k_ui_shader_colour, 128, 48 ); + + skaterift.rt_textures[ k_skaterift_rt_server_status ] = + gpipeline.fb_workshop_preview->attachments[0].id; +} + 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 ); @@ -329,6 +395,8 @@ static void on_server_connect_status( CallbackMsg_t *msg ){ else{ //vg_warn( " Recieved signal from unknown connection\n" ); } + + render_server_status_gui(); } static void on_persona_state_change( CallbackMsg_t *msg ){