controls overlay
[carveJwlIkooP6JGAAIwe30JlM.git] / menu.c
diff --git a/menu.c b/menu.c
index 7cfd738047aa028782710e3d3e601fbfbc2568c9..d5c8d5ed1d11401a3c5aac45a1635b7cc5d0f800 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -11,7 +11,7 @@
 #include "gui.h"
 #include "shaders/model_menu.h"
 
-struct global_menu menu;
+struct global_menu menu = { .skip_starter = 0 };
 
 /*
  * Attaches memory locations to the various items in the menu
@@ -124,6 +124,18 @@ void menu_init(void)
    }
 
    mdl_close( &menu.model );
+
+   vg_console_reg_var( "skip_starter_menu", &menu.skip_starter,
+                       k_var_dtype_i32, VG_VAR_PERSISTENT );
+}
+
+void menu_at_begin(void)
+{
+   if( menu.skip_starter ) return;
+
+   skaterift.activity = k_skaterift_menu;
+   menu.page = 0xffffffff;
+   menu_open_page( "Starter", k_ent_menuitem_stack_append );
 }
 
 /*
@@ -203,7 +215,8 @@ void menu_open_page( const char *name,
 /*
  * activate a pressable type
  */
-static void menu_trigger_item( ent_menuitem *item ){
+static void menu_trigger_item( ent_menuitem *item )
+{
    if     ( item->type == k_ent_menuitem_type_event_button ){
       u32 q = item->button.pstr;
 
@@ -237,12 +250,21 @@ static void menu_trigger_item( ent_menuitem *item ){
       else if( MDL_CONST_PSTREQ( &menu.model, q, "prem_nevermind" ) ){
          menu_close();
       }
+      else if( MDL_CONST_PSTREQ( &menu.model, q, "starter_enter" ) )
+      {
+         if( network_client.auto_connect )
+            network_client.user_intent = k_server_intent_online;
+
+         menu_close();
+      }
    }
-   else if( item->type == k_ent_menuitem_type_page_button ){
+   else if( item->type == k_ent_menuitem_type_page_button )
+   {
       menu_open_page( mdl_pstr( &menu.model, item->button.pstr ),
                       item->button.stack_behaviour );
    }
-   else if( item->type == k_ent_menuitem_type_toggle ){
+   else if( item->type == k_ent_menuitem_type_toggle )
+   {
       if( item->pi32 ){
          *item->pi32 = *item->pi32 ^ 0x1;
       }