ui_text( ctx, a1, "\x93", 1, k_ui_align_middle_center, 0 );
}
-static void menu_standard_widget( ui_context *ctx,
- ui_rect inout_panel, ui_rect rect, ui_px s )
+static void menu_standard_widget( ui_context *ctx, ui_rect inout_panel, ui_rect rect, ui_px s )
{
ui_split( inout_panel, k_ui_axis_h, ctx->font->sy*s*2, 8, rect, inout_panel );
}
ui_fill( ctx, rect, GUI_COL_DARK );
}
- ui_text( ctx, rect, text, 1, k_ui_align_middle_center, clickable? 0: ui_colour(ctx,k_ui_bg) );
+ if( text )
+ ui_text( ctx, rect, text, 1, k_ui_align_middle_center, clickable? 0: ui_colour(ctx,k_ui_bg) );
if( state == k_ui_button_click )
{
return menu_button_rect( ctx, rect, select, clickable, text );
}
-static bool menu_checkbox( ui_context *ctx, ui_rect inout_panel, bool select,
- const char *str_label, i32 *data )
+static bool menu_checkbox( ui_context *ctx, ui_rect inout_panel, bool select, const char *str_label, i32 *data )
{
ui_rect rect, label, box;
menu_standard_widget( ctx, inout_panel, rect, 1 );
else return 0;
}
-static void menu_heading( ui_context *ctx,
- ui_rect inout_panel, const char *label, u32 colour )
+static void menu_heading( ui_context *ctx, ui_rect inout_panel, const char *label, u32 colour )
{
ui_rect rect;
menu_standard_widget( ctx, inout_panel, rect, 1 );
ui_text( ctx, rect, label, 1, k_ui_align_middle_center, 1 );
rect[0] += 1;
rect[1] -= 1;
- ui_text( ctx, rect, label, 1, k_ui_align_middle_center, colour? colour:
- ui_colour(ctx, k_ui_blue+k_ui_brighter) );
+ ui_text( ctx, rect, label, 1, k_ui_align_middle_center, colour? colour: ui_colour(ctx, k_ui_blue+k_ui_brighter) );
}
static u32 medal_colour( ui_context *ctx, u32 flags )
return;
}
- if( menu_button( ctx, list, R == 1, 1, "Credits" ) )
+ ui_rect online_box;
+ ui_split( list, k_ui_axis_h, 128, 8, online_box, list );
+ ui_fill( ctx, online_box, ui_opacity( GUI_COL_DARK, 0.3f ) );
+ ui_outline( ctx, online_box, 1, GUI_COL_NORM, 0 );
+
+ ui_rect inner_online_panel;
+ rect_copy( online_box, inner_online_panel );
+ ui_rect_pad( inner_online_panel, (ui_px[2]){8,8} );
+
+ ctx->font = &vgf_default_large;
+ i32 temp = network_client.user_intent;
+ if( menu_checkbox( ctx, inner_online_panel, R == 1, "Online Mode", &temp ) )
+ network_client.user_intent = temp;
+
+ ui_rect label_box;
+ ctx->font = &vgf_default_small;
+ menu_standard_widget( ctx, inner_online_panel, label_box, 1 );
+ ui_text( ctx, label_box, "Connection status:", 1, k_ui_align_middle_left, 0 );
+
+ char buf[128];
+ vg_str str;
+ vg_strnull( &str, buf, sizeof(buf) );
+ u32 colour;
+ network_status_string( &str, &colour );
+ menu_standard_widget( ctx, inner_online_panel, label_box, 1 );
+ ui_text( ctx, label_box, buf, 1, k_ui_align_middle_left, colour );
+
+ ctx->font = &vgf_default_title;
+
+ if( menu_button( ctx, list, R == 2, 1, "Credits" ) )
{
menu.page = k_menu_page_credits;
}
ui_rect end = { list[0], list[1]+list[3]-64, list[2], 72 };
- if( menu_button( ctx, end, R == 2, 1, "Quit Game" ) )
+ if( menu_button( ctx, end, R == 3, 1, "Quit Game" ) )
{
vg.window_should_close = 1;
}
ctx->font = &vgf_default_large;
list[1] -= 8;
menu_heading( ctx, list, "Game", 0 );
- menu_checkbox( ctx, list, R == 0, "Show controls overlay",
- &control_overlay.enabled );
- menu_checkbox( ctx, list, R == 1, "Auto connect to global server",
- &network_client.auto_connect );
+ menu_checkbox( ctx, list, R == 0, "Show controls overlay", &control_overlay.enabled );
+ menu_checkbox( ctx, list, R == 1, "Auto connect to global server", &network_client.auto_connect );
menu_heading( ctx, list, "Audio/Video", 0 );
- menu_slider( ctx, list, R == 2, "Volume", 0, 100,
- &vg_audio.external_global_volume, "%.f%%" );
- menu_slider( ctx, list, R == 3, "Resolution", 0, 100,
- &k_render_scale, "%.f%%" );
+ menu_slider( ctx, list, R == 2, "Volume", 0, 100, &vg_audio.external_global_volume, "%.f%%" );
+ menu_slider( ctx, list, R == 3, "Resolution", 0, 100, &k_render_scale, "%.f%%" );
menu_checkbox( ctx, list, R == 4, "Motion Blur", &k_blur_effect );
menu_heading( ctx, list, "Camera", 0 );
- menu_slider( ctx, list, R == 5, "Fov", 97, 135,
- &k_fov, "%.1f\xb0" );
+ menu_slider( ctx, list, R == 5, "Fov", 97, 135, &k_fov, "%.1f\xb0" );
menu_slider( ctx, list, R == 6, "Cam Height", -0.4f, +1.4f,
- &k_cam_height, vg_lerpf(-0.4f,1.4f,k_cam_height)>=0.0f?
- "+%.2fm": "%.2fm" );
+ &k_cam_height, vg_lerpf(-0.4f,1.4f,k_cam_height)>=0.0f? "+%.2fm": "%.2fm" );
menu_checkbox( ctx, list, R == 7, "Invert Y Axis", &k_invert_y );
if( !network_connected() )
return;
- netmsg_playeritem *item =
- alloca( sizeof(netmsg_playeritem) + ADDON_UID_MAX );
+ netmsg_playeritem *item = alloca( sizeof(netmsg_playeritem) + ADDON_UID_MAX );
item->inetmsg_id = k_inetmsg_playeritem;
item->type_index = type;
item->client = 0;
- if( (type == k_netmsg_playeritem_world0) ||
- (type == k_netmsg_playeritem_world1) )
+ if( (type == k_netmsg_playeritem_world0) || (type == k_netmsg_playeritem_world1) )
{
addon_reg *reg = _world.main.addon;
void network_status_string( vg_str *str, u32 *colour )
{
- if( skaterift.demo_mode ){
+ if( skaterift.demo_mode )
+ {
vg_strcat( str, "Offline" );
+ *colour = 0xff0000a0;
return;
}
- if( steam_ready ){
- if( network_client.user_intent == k_server_intent_offline ){
+ if( steam_ready )
+ {
+ if( network_client.user_intent == k_server_intent_offline )
+ {
vg_strcat( str, "Offline" );
}
- else {
+ else
+ {
ESteamNetworkingConnectionState state = network_client.state;
if( state == k_ESteamNetworkingConnectionState_None )
{
vg_strcatf( str, "Connecting...\n%s", network_client.host_adress );
- if( network_client.retries ){
+ if( network_client.retries )
+ {
vg_strcat( str, "\n(" );
vg_strcati32( str, network_client.retries );
vg_strcat( str, " retries)" );
}
}
- else if( state == k_ESteamNetworkingConnectionState_Connected ){
+ else if( state == k_ESteamNetworkingConnectionState_Connected )
+ {
vg_strcatf( str, "Connected to:\n%s", network_client.host_adress );
*colour = 0xff00a020;
}
vg_strcat( str, "Connection Closed" );
else if( state == k_ESteamNetworkingConnectionState_FindingRoute )
vg_strcat( str, "Finding Route" );
- else if( state ==
- k_ESteamNetworkingConnectionState_ProblemDetectedLocally){
+ else if( state == k_ESteamNetworkingConnectionState_ProblemDetectedLocally)
+ {
vg_strcat( str, "Problem Detected\nLocally" );
*colour = 0xff0000a0;
}
vg_strcat( str, "???" );
}
}
- else {
+ else
+ {
vg_strcat( str, "Steam Offline" );
*colour = 0xff0000a0;
}
ui_text( ctx, r, buf, 1, k_ui_align_center, 0 );
ui_flush( ctx, k_ui_shader_colour, NULL );
- skaterift.rt_textures[ k_skaterift_rt_server_status ] =
- g_render.fb_network_status->attachments[0].id;
+ skaterift.rt_textures[ k_skaterift_rt_server_status ] = g_render.fb_network_status->attachments[0].id;
}
-static void on_server_connect_status( CallbackMsg_t *msg ){
+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 );
vg_info( " %s -> %s\n",
hSteamNetworkingSockets, &network_client.ip, 0, NULL );
}
-static void network_sign_on_complete(void){
+static void network_sign_on_complete(void)
+{
vg_success( "Sign on completed\n" );
/* send our init info */
network_send_username();
- for( u32 i=0; i<k_netmsg_playeritem_max; i ++ ){
+ for( u32 i=0; i<k_netmsg_playeritem_max; i ++ )
+ {
network_send_item(i);
}
network_send_region();
void network_init(void)
{
- vg_console_reg_var( "auto_connect", &network_client.auto_connect,
- k_var_dtype_i32, VG_VAR_PERSISTENT );
- if( steam_ready ){
+ vg_console_reg_var( "auto_connect", &network_client.auto_connect, k_var_dtype_i32, VG_VAR_PERSISTENT );
+ if( steam_ready )
+ {
u32 alloc_size = sizeof(struct network_request)*NETWORK_MAX_REQUESTS;
network_client.request_buffer =
vg_linear_alloc( vg_mem.rtmemory, alloc_size );