challenge effects
[carveJwlIkooP6JGAAIwe30JlM.git] / menu.h
diff --git a/menu.h b/menu.h
index 488684320ada8a01ef8ad116502956ff54580111..59c01f61a0b7ec7423db6232c48e6fd9ff95a604 100644 (file)
--- a/menu.h
+++ b/menu.h
@@ -5,7 +5,6 @@
 #include "model.h"
 #include "world_render.h"
 #include "player.h"
-#include "conf.h"
 #include "shaders/model_menu.h"
 #include "audio.h"
 #include "input.h"
@@ -14,8 +13,7 @@
 #define MENU_STACK_SIZE 8
 
 struct {
-   int active, credits_open;
-   f32 factive;
+   int credits_open;
    int disable_open;
 
    u32 page, /* current page index */
@@ -97,8 +95,14 @@ static void menu_link(void)
    }
 }
 
-static void menu_init(void)
-{
+static void menu_close(void){
+   skaterift.activity = k_skaterift_default;
+   menu.page_depth = 0;
+   menu.page = 0xffffffff;
+   srinput.enabled = 0;
+}
+
+static void menu_init(void){
    void *alloc = vg_mem.rtmemory;
 
    mdl_open( &menu.model, "models/rs_menu.mdl", alloc );
@@ -136,8 +140,7 @@ static void menu_back_page(void)
    vg_info( "menu_back_page()\n" );
    menu.page_depth --;
    if( menu.page_depth == 0 ){
-      menu.active = 0;
-      menu.page = 0xffffffff;
+      menu_close();
    }
    else{
       menu.page = menu.page_stack[ menu.page_depth ].page;
@@ -207,12 +210,15 @@ static void menu_trigger_item( ent_menuitem *item )
       if( MDL_CONST_PSTREQ( &menu.model, q, "quit" ) ){
          vg.window_should_close = 1;
       }
-      else if( MDL_CONST_PSTREQ( &menu.model, q, "reset" ) ){
+      else if( MDL_CONST_PSTREQ( &menu.model, q, "reset_nearest" ) ){
          localplayer_cmd_respawn( 0, NULL );
-         
-         menu.page_depth = 0;
-         menu.active = 0;
-         menu.page = 0xffffffff;
+         menu_close();
+      }
+      else if( MDL_CONST_PSTREQ( &menu.model, q, "reset_home" ) ){
+         world_set_active_instance( 0 );
+         localplayer.viewable_world = world_current_instance();
+         localplayer_cmd_respawn( 1, (const char *[]){"start"} );
+         menu_close();
       }
       else if( MDL_CONST_PSTREQ( &menu.model, q, "credits" ) ){
          menu.credits_open = 1;
@@ -251,8 +257,7 @@ static f32 menu_slider_snap( f32 value, f32 old, f32 notch )
 /* 
  * Run from vg_gui every frame
  */
-static void menu_update(void)
-{
+static void menu_update(void){
    if( workshop_form.page != k_workshop_form_hidden ){
       return;
    }
@@ -266,19 +271,15 @@ static void menu_update(void)
    }
 
    if( button_down( k_srbind_mopen ) ){
-      if( !menu.active && !menu.disable_open ){
-         menu.active = 1;
+      if( skaterift.activity == k_skaterift_default ){
+         skaterift.activity = k_skaterift_menu;
          menu.page = 0xffffffff;
          menu_open_page( "Main Menu" );
          return;
       }
    }
 
-   menu.factive = vg_lerpf( menu.factive, menu.active, 
-                            vg.time_frame_delta * 6.0f );
-
-   if( !menu.active ) return;
-
+   if( skaterift.activity != k_skaterift_menu ) return;
    enum menu_input_mode prev_mode = menu.input_mode;
 
    /* get buttons inputs
@@ -506,8 +507,7 @@ static void menu_update(void)
 /*
  * Run from vg_gui when active
  */
-VG_STATIC void menu_render(void)
-{
+VG_STATIC void menu_render(void){
    glEnable(GL_BLEND);
    glDisable(GL_DEPTH_TEST);
    glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );