add engine settings
[carveJwlIkooP6JGAAIwe30JlM.git] / ent_miniworld.c
index 9d1d615dd66668e09cd2db53782a2fe1f6fe5cf7..46def88bf700f90eeacef359585da43d8762997d 100644 (file)
@@ -5,26 +5,6 @@
 #include "gui.h"
 #include "menu.h"
 
-static void miniworld_helper_default(void){
-   gui_helper_clear();
-   vg_str text;
-   if( gui_new_helper( input_button_list[k_srbind_miniworld_resume], &text ))
-      vg_strcat( &text, "Resume" );
-
-   if( gui_new_helper( input_button_list[k_srbind_miniworld_teleport],&text))
-      vg_strcat( &text, "Teleport" );
-}
-
-static void miniworld_helper_tele(void){
-   gui_helper_clear();
-   vg_str text;
-   if( gui_new_helper( input_button_list[k_srbind_miniworld_resume], &text ))
-      vg_strcat( &text, "Confirm" );
-
-   if( gui_new_helper( input_button_list[k_srbind_mback],&text))
-      vg_strcat( &text, "Cancel" );
-}
-
 static void ent_miniworld_call( world_instance *world, ent_call *call ){
    ent_miniworld *miniworld = mdl_arritm( &world->ent_miniworld, 
                                           mdl_entity_id_id(call->id) );
@@ -37,7 +17,12 @@ static void ent_miniworld_call( world_instance *world, ent_call *call ){
 
       mdl_transform_m4x3( &miniworld->transform, global_miniworld.mmdl );
       global_miniworld.active = miniworld;
-      miniworld_helper_default();
+
+      gui_helper_clear();
+      vg_str text;
+
+      if( gui_new_helper( input_button_list[k_srbind_miniworld_resume], &text ))
+         vg_strcat( &text, "Enter World" );
    }
    else if( call->function == 1 ){
       global_miniworld.active = NULL;
@@ -51,7 +36,7 @@ static void ent_miniworld_call( world_instance *world, ent_call *call ){
    }
 }
 
-static void miniworld_icon( camera *cam, enum gui_icon icon, v3f pos ){
+static void miniworld_icon( camera *cam, enum gui_icon icon, v3f pos, f32 size){
    m4x3f mmdl;
    v3_copy( cam->transform[2], mmdl[2] );
    mmdl[2][1] = 0.0f;
@@ -61,7 +46,7 @@ static void miniworld_icon( camera *cam, enum gui_icon icon, v3f pos ){
    m4x3_mulv( global_miniworld.mmdl, pos, mmdl[3] );
 
    shader_model_font_uMdl( mmdl );
-   shader_model_font_uOffset( (v4f){0,0,0,20} );
+   shader_model_font_uOffset( (v4f){0,0,0,20.0f*size} );
 
    m4x4f m4mdl;
    m4x3_expand( mmdl, m4mdl );
@@ -102,7 +87,7 @@ static void ent_miniworld_render( world_instance *host_world, camera *cam ){
       return;
 
    render_world_override( dest_world, host_world, global_miniworld.mmdl, cam,
-                          global_miniworld.dest_spawn );
+                          NULL, (v4f){dest_world->tar_min,10000.0f,0.0f,0.0f} );
    render_world_routes( dest_world, host_world, 
                         global_miniworld.mmdl, cam, 0, 1 );
 
@@ -116,6 +101,9 @@ static void ent_miniworld_render( world_instance *host_world, camera *cam ){
    shader_model_font_uTexMain( 0 );
    shader_model_font_uColour( (v4f){1,1,1,1} );
 
+   miniworld_icon( cam, k_gui_icon_player, dest_world->player_co, 
+                  1.0f + sinf(vg.time)*0.2f );
+
    for( u32 i=0; i<mdl_arrcount(&dest_world->ent_challenge); i++ ){
       ent_challenge *challenge = mdl_arritm( &dest_world->ent_challenge, i );
 
@@ -123,16 +111,19 @@ static void ent_miniworld_render( world_instance *host_world, camera *cam ){
       if( challenge->status )
          icon = k_gui_icon_tick;
 
-      miniworld_icon( cam, icon, challenge->transform.co );
+      miniworld_icon( cam, icon, challenge->transform.co, 1.0f );
    }
 
-   for( u32 i=0; i<mdl_arrcount(&dest_world->ent_skateshop); i++ ){
-      ent_skateshop *shop = mdl_arritm( &dest_world->ent_skateshop, i );
-      if( shop->type == k_skateshop_type_boardshop ){
-         miniworld_icon( cam, k_gui_icon_board, shop->transform.co );
+   for( u32 i=0; i<mdl_arrcount(&dest_world->ent_route); i++ ){
+      ent_route *route = mdl_arritm( &dest_world->ent_route, i );
+
+      if( route->flags & k_ent_route_flag_achieve_gold ){
+         miniworld_icon( cam, k_gui_icon_rift_run_gold, 
+                         route->board_transform[3],1.0f);
       }
-      else if( shop->type == k_skateshop_type_worldshop ){
-         miniworld_icon( cam, k_gui_icon_world, shop->transform.co );
+      else if( route->flags & k_ent_route_flag_achieve_silver ){
+         miniworld_icon( cam, k_gui_icon_rift_run_silver, 
+                         route->board_transform[3],1.0f);
       }
    }
 
@@ -143,7 +134,7 @@ static void ent_miniworld_render( world_instance *host_world, camera *cam ){
       v4_copy( route->colour, colour );
       v3_muls( colour, 1.6666f, colour );
       shader_model_font_uColour( colour );
-      miniworld_icon( cam, k_gui_icon_rift_run, route->board_transform[3] );
+      miniworld_icon( cam, k_gui_icon_rift_run, route->board_transform[3],1.0f);
    }
 }
 
@@ -157,30 +148,26 @@ static void ent_miniworld_preupdate(void){
        (global_miniworld.transition) ||
        (world_static.active_instance != k_world_purpose_hub) ||
        (!miniworld) ||
-       (dest->status != k_world_status_loaded) ){
-      
-      if( global_miniworld.mode ){
-         global_miniworld.mode = 0;
-         menu.disable_open = 0;
-         srinput.state = k_input_state_resume;
-         gui_helper_clear();
-      }
+       (dest->status != k_world_status_loaded) ||
+       (skaterift.activity != k_skaterift_default)) {
       return;
    }
 
    if( button_down( k_srbind_miniworld_resume ) ){
-      global_miniworld.mode = 0;
+      if( skaterift.demo_mode ){
+         if( world_static.instance_addons[1]->flags & ADDON_REG_PREMIUM ){
+            skaterift.activity = k_skaterift_menu;
+            menu.page = 0xffffffff;
+            menu_open_page( "Premium", k_ent_menuitem_stack_append );
+            return;
+         }
+      }
+
       global_miniworld.transition = 1;
       global_miniworld.t = 0.0f;
       global_miniworld.cam = skaterift.cam;
-   
-      if( global_miniworld.dest_spawn ){
-         v3_copy( global_miniworld.dest_spawn->transform.co, 
-                  dest->player_co );
-      }
 
       world_switch_instance(1);
-      global_miniworld.dest_spawn = NULL;
       srinput.state = k_input_state_resume;
       menu.disable_open = 0;
       gui_helper_clear();
@@ -188,31 +175,6 @@ static void ent_miniworld_preupdate(void){
       audio_oneshot( &audio_ui[2], 1.0f, 0.0f );
       audio_unlock();
    }
-   else {
-      if( global_miniworld.mode == 1 ){
-         if( button_down(k_srbind_mback) ){
-            global_miniworld.mode = 0;
-            global_miniworld.dest_spawn = NULL;
-            menu.disable_open = 0;
-            srinput.state = k_input_state_resume;
-            miniworld_helper_default();
-         }
-         else {
-            m4x3f mmdl_inv;
-            m4x3_invert_full( global_miniworld.mmdl, mmdl_inv );
-            v3f lco;
-            m4x3_mulv( mmdl_inv, localplayer.rb.co, lco );
-            global_miniworld.dest_spawn = world_find_closest_spawn( dest, lco );
-         }
-      }
-      else {
-         if( button_down( k_srbind_miniworld_teleport ) ){
-            global_miniworld.mode = 1;
-            menu.disable_open = 1;
-            miniworld_helper_tele();
-         }
-      }
-   }
 }
 
 static void ent_miniworld_goback(void){