menu_decor_select( rect );
state |= k_ui_button_hover;
}
+ else
+ state = k_ui_button_none;
}
ui_rect line = { box[0], box[1], t * (f32)box[2], box[3] };
}
}
+static void menu_link_modal( const char *url )
+{
+ menu.web_link = url;
+
+ /* Only reset the choice of browser if 'No' was selected. */
+ if( menu.web_choice == 2 )
+ menu.web_choice = 0;
+}
+
void menu_gui(void)
{
if( button_down( k_srbind_mopen ) )
/* get buttons inputs
* -------------------------------------------------------------------*/
- int ml = button_down( k_srbind_mleft ),
- mr = button_down( k_srbind_mright ),
- mu = button_down( k_srbind_mup ),
- md = button_down( k_srbind_mdown ),
+ int ml = button_press( k_srbind_mleft ),
+ mr = button_press( k_srbind_mright ),
+ mu = button_press( k_srbind_mup ),
+ md = button_press( k_srbind_mdown ),
mh = ml-mr,
mv = mu-md,
enter = button_down( k_srbind_maccept );
+ /* TAB CONTROL */
+ u8 lb_down = 0, rb_down = 0;
+ vg_exec_input_program( k_vg_input_type_button_u8,
+ (vg_input_op[]){
+ vg_joy_button, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, vg_end
+ }, &rb_down );
+ vg_exec_input_program( k_vg_input_type_button_u8,
+ (vg_input_op[]){
+ vg_joy_button, SDL_CONTROLLER_BUTTON_LEFTSHOULDER, vg_end
+ }, &lb_down );
+
+ int mtab = (i32)rb_down - (i32)lb_down;
+
+ if( menu.repeater > 0.0f )
+ {
+ menu.repeater -= vg_minf( vg.time_frame_delta, 0.5f );
+ mv = 0;
+ mh = 0;
+ mtab = 0;
+ }
+ else
+ {
+ if( mv || mh || mtab )
+ menu.repeater += 0.2f;
+ }
+
if( vg_input.display_input_method == k_input_method_kbm )
{
vg_ui.wants_mouse = 1;
if( skaterift.activity != k_skaterift_menu ) return;
+
+ if( menu.web_link )
+ {
+ ui_rect panel = { 0,0, 800, 200 },
+ screen = { 0,0, vg.window_x,vg.window_y };
+ ui_rect_center( screen, panel );
+ ui_fill( panel, GUI_COL_DARK );
+ ui_outline( panel, 1, GUI_COL_NORM, 0 );
+ ui_rect_pad( panel, (ui_px[]){8,8} );
+
+ ui_rect title;
+ ui_split( panel, k_ui_axis_h, 28*2, 0, title, panel );
+ ui_font_face( &vgf_default_title );
+ ui_text( title, "Open Link?", 1, k_ui_align_middle_center, 0 );
+
+ ui_split( panel, k_ui_axis_h, 28, 0, title, panel );
+ ui_font_face( &vgf_default_large );
+ ui_text( title, menu.web_link, 1, k_ui_align_middle_center, 0 );
+
+ ui_rect end = { panel[0], panel[1] + panel[3] - 48, panel[2], 48 };
+
+ ui_rect a,b,c;
+ ui_split_ratio( end, k_ui_axis_v, 2.0/3.0, 2, a, c );
+ ui_split_ratio( a, k_ui_axis_v, 1.0/2.0, 2, a, b );
+
+ i32 R = menu_nav( &menu.web_choice, mh, 2 );
+
+ if( menu_button( a, R==0, "Steam Overlay" ) )
+ {
+ if( steam_ready )
+ {
+ ISteamFriends *hSteamFriends = SteamAPI_SteamFriends();
+ SteamAPI_ISteamFriends_ActivateGameOverlayToWebPage( hSteamFriends,
+ menu.web_link,
+ k_EActivateGameOverlayToWebPageMode_Default );
+ menu.web_link = NULL;
+ }
+ }
+
+ if( menu_button( b, R==1, "Web Browser" ) )
+ {
+ char buf[512];
+ vg_str str;
+ vg_strnull( &str, buf, sizeof(buf) );
+#ifdef _WIN32
+ vg_strcat( &str, "start " );
+#else
+ vg_strcat( &str, "xdg-open " );
+#endif
+ vg_strcat( &str, menu.web_link );
+
+ if( vg_strgood(&str) )
+ system( buf );
+
+ menu.web_link = NULL;
+ }
+
+ if( menu_button( c, R==2, "No" ) || button_down( k_srbind_mback ) )
+ {
+ audio_lock();
+ audio_oneshot( &audio_ui[3], 1.0f, 0.0f );
+ audio_unlock();
+ menu.web_link = NULL;
+ }
+
+ goto menu_draw;
+ }
+
+
if( vg.settings_open )
{
if( button_down( k_srbind_mback ) )
menu_try_find_cam( 3 );
goto menu_draw;
}
+ else if( menu.page == k_menu_page_premium )
+ {
+ i32 R = menu_nav( &menu.prem_row, mh, 1 );
+ ui_rect panel = { 0,0, 600, 400 },
+ screen = { 0,0, vg.window_x,vg.window_y };
+ ui_rect_center( screen, panel );
+ ui_fill( panel, ui_opacity( GUI_COL_DARK, 0.35f ) );
+ ui_outline( panel, 1, GUI_COL_NORM, 0 );
+ ui_rect_pad( panel, (ui_px[]){8,8} );
+
+ ui_rect title;
+ ui_split( panel, k_ui_axis_h, 28*2, 0, title, panel );
+ ui_font_face( &vgf_default_title );
+ ui_text( title, "Content is in the full game.",
+ 1, k_ui_align_middle_center, 0 );
+
+ ui_split( panel, k_ui_axis_h, 28, 0, title, panel );
+ ui_font_face( &vgf_default_large );
+
+ ui_rect end = { panel[0], panel[1] + panel[3] - 48, panel[2], 48 }, a,b;
+ ui_split_ratio( end, k_ui_axis_v, 0.5f, 2, a, b );
+
+ if( menu_button( a, R == 0, "Store Page" ) )
+ {
+ if( steam_ready )
+ SteamAPI_ISteamFriends_ActivateGameOverlayToStore(
+ SteamAPI_SteamFriends(), 2103940, k_EOverlayToStoreFlag_None);
+ }
+
+ if( menu_button( b, R == 1, "Nah" ) || button_down( k_srbind_mback ) )
+ {
+ audio_lock();
+ audio_oneshot( &audio_ui[3], 1.0f, 0.0f );
+ audio_unlock();
+ skaterift.activity = k_skaterift_default;
+ return;
+ }
+
+ goto menu_draw;
+ }
/* TOP BAR
* -------------------------------------------------------------------*/
[k_menu_main_guide ] = "Guides"
};
- /* TAB CONTROL */
- u8 lb_down = 0, rb_down = 0;
- vg_exec_input_program( k_vg_input_type_button_u8,
- (vg_input_op[]){
- vg_joy_button, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, vg_end
- }, &rb_down );
- vg_exec_input_program( k_vg_input_type_button_u8,
- (vg_input_op[]){
- vg_joy_button, SDL_CONTROLLER_BUTTON_LEFTSHOULDER, vg_end
- }, &lb_down );
-
- if( menu.repeater > 0.0f )
- {
- menu.repeater -= vg_minf( vg.time_frame_delta, 0.5f );
- }
- else
+ if( mtab )
{
- if( lb_down != rb_down )
- {
- menu.main_index += rb_down;
- menu.main_index -= lb_down;
- menu.repeater += 0.2f;
+ menu.main_index += mtab;
- if( menu.main_index == -1 )
- menu.main_index ++;
+ if( menu.main_index == -1 )
+ menu.main_index ++;
- if( menu.main_index == vg_list_size(opts) )
- menu.main_index --;
+ if( menu.main_index == vg_list_size(opts) )
+ menu.main_index --;
- audio_lock();
- audio_oneshot( &audio_ui[3], 1.0f, 0.0f );
- audio_unlock();
- }
+ audio_lock();
+ audio_oneshot( &audio_ui[3], 1.0f, 0.0f );
+ audio_unlock();
}
ui_px x = 0, spacer = 8;
ui_font_face( &vgf_default_large );
list[1] -= 8;
menu_heading( list, "Info", 0 );
- if( R == 0 ) menu_try_find_cam( 1 );
- if( menu_button( list, R == 0, "Where to go" ) )
- {
- }
+ if( menu_button( list, R == 0, "Where to go" ) ) menu.guide_sel = 1;
+ if( menu.guide_sel == 1 ) menu_try_find_cam( 1 );
- if( R == 1 ) menu_try_find_cam( 0 );
- if( menu_button( list, R == 1, "Finding worlds" ) )
- {
- }
+ if( menu_button( list, R == 1, "Finding worlds" ) ) menu.guide_sel = 2;
+ if( menu.guide_sel == 2 ) menu_try_find_cam( 0 );
- if( R == 2 ) menu_try_find_cam( 2 );
- if( menu_button( list, R == 2, "Playing Online" ) )
- {
- }
+ if( menu_button( list, R == 2, "Playing Online" ) ) menu.guide_sel = 3;
+ if( menu.guide_sel == 3 ) menu_try_find_cam( 2 );
menu_heading( list, "Controls", 0 );
- if( R >= 3 ) menu_try_find_cam( 3 );
if( menu_button( list, R == 3, "Skating \xb2" ) )
{
+ menu_link_modal(
+ "https://skaterift.com/index.php?page=skating" );
}
+ if( menu.guide_sel == 0 || menu.guide_sel > 3 ) menu_try_find_cam( 3 );
+
if( menu_button( list, R == 4, "Tricks \xb2" ) )
{
+ menu_link_modal(
+ "https://skaterift.com/index.php?page=tricks" );
}
menu_heading( list, "Workshop", 0 );
if( menu_button( list, R == 5, "Create a Board \xb2" ) )
{
+ menu_link_modal(
+ "https://skaterift.com/index.php?page=workshop_board" );
}
if( menu_button( list, R == 6, "Create a World \xb2" ) )
{
+ menu_link_modal(
+ "https://skaterift.com/index.php?page=workshop_world" );
}
if( menu_button( list, R == 7, "Create a Playermodel \xb2" ) )
{
+ menu_link_modal(
+ "https://skaterift.com/index.php?page=workshop_player" );
}
}
-
}
menu_draw: