gui_location_print_ccmd( 1, (const char *[]){ "Invalid home ID" } );
}
+VG_STATIC void respawn_map_draw_icon( camera *cam,
+ enum gui_icon icon, v3f pos ){
+ v4f v;
+ v3_copy( pos, v );
+ v[3] = 1.0f;
+ m4x4_mulv( cam->mtx.pv, v, v );
+ v2_divs( v, v[3], v );
+
+ gui_draw_icon( icon, (v2f){ v[0]*0.5f+0.5f,v[1]*0.5f+0.5f }, 1.0f );
+}
VG_STATIC void respawn_chooser_pre_update(void){
if( skaterift.activity != k_skaterift_respawning ) return;
gui_helper_action( joystick_display_string(k_srjoystick_steer,2), "move" );
if( world_static.instances[0].status == k_world_status_loaded )
- gui_helper_action( axis_display_string(k_sraxis_mbrowse_h), "world" );
+ gui_helper_action( axis_display_string(k_sraxis_mworld_h), "world" );
gui_helper_action( button_display_string(k_srbind_maccept), "spawn" );
- gui_helper_action( axis_display_string(k_sraxis_mbrowse_v), "home" );
+ gui_helper_action( button_display_string(k_srbind_home), "home" );
if( button_down( k_srbind_mback ) ){
srinput.enabled = 0;
skaterift.activity = k_skaterift_menu;
menu.page = 0xffffffff;
- menu_open_page( "Main Menu" );
+ menu_open_page( "Main Menu", k_ent_menuitem_stack_append );
return;
}
return;
}
- if( button_down( k_srbind_mleft ) ){
+ if( button_down( k_srbind_world_left ) ){
if( respawn_chooser.world_id > 0 )
respawn_chooser_setworld( respawn_chooser.world_id-1 );
}
- if( button_down( k_srbind_mright ) ){
+ if( button_down( k_srbind_world_right ) ){
u32 next = respawn_chooser.world_id+1;
if( next < vg_list_size(world_static.instances) )
respawn_chooser_setworld( next );
}
- if( button_down(k_srbind_mup) ){
+ if( button_down(k_srbind_home) ){
respawn_chooser.home_select ++;
if( respawn_chooser.home_select >= vg_list_size(respawn_homes) )
respawn_chooser.home_select = 0;
respawn_chooser_gohome();
}
- else if( button_down(k_srbind_mdown) ){
- if( respawn_chooser.home_select == 0 )
- respawn_chooser.home_select = vg_list_size(respawn_homes)-1;
- else
- respawn_chooser.home_select --;
- respawn_chooser_gohome();
- }
world_instance *world = &world_static.instances[ respawn_chooser.world_id ];
v3f *bbx = world->scene_geo.bbx;
v3_copy( spawn->transform.co, v );
v[3] = 1.0f;
m4x4_mulv( cam->mtx.pv, v, v );
+ v2_divs( v, v[3], v );
f32 d2 = v2_length2(v);
if( d2 < closest2 ){
}
}
- if( respawn_chooser.spawn ){
- vg_line_cross( respawn_chooser.spawn->transform.co, VG__GREEN, 5.0f );
+ /* icons
+ * ---------------------*/
+ for( u32 i=0; i<mdl_arrcount(&world->ent_challenge); i++ ){
+ ent_challenge *challenge = mdl_arritm( &world->ent_challenge, i );
+
+ enum gui_icon icon = k_gui_icon_exclaim;
+ if( challenge->status )
+ icon = k_gui_icon_tick;
+
+ respawn_map_draw_icon( cam, icon, challenge->transform.co );
+ }
+
+ for( u32 i=0; i<mdl_arrcount(&world->ent_skateshop); i++ ){
+ ent_skateshop *shop = mdl_arritm( &world->ent_skateshop, i );
+ if( shop->type == k_skateshop_type_boardshop ){
+ respawn_map_draw_icon( cam, k_gui_icon_board, shop->transform.co );
+ }
+ else if( shop->type == k_skateshop_type_worldshop ){
+ respawn_map_draw_icon( cam, k_gui_icon_world, shop->transform.co );
+ }
+ }
+
+ for( u32 i=0; i<mdl_arrcount(&world->ent_gate); i++ ){
+ ent_gate *gate = mdl_arritm( &world->ent_gate, i );
+ if( gate->flags & k_ent_gate_nonlocal ){
+ respawn_map_draw_icon( cam, k_gui_icon_rift, gate->co[0] );
+ }
}
}
if( respawn_chooser.spawn )
v3_copy( respawn_chooser.spawn->transform.co, uSpawnPos );
+ uPlayerPos[3] = v3_dist(uPlayerPos,uSpawnPos);
+ uSpawnPos[3] = 1.0f/uPlayerPos[3];
+
shader_scene_override_uPlayerPos( uPlayerPos );
shader_scene_override_uSpawnPos( uSpawnPos );
}