X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=respawn.c;fp=respawn.c;h=50ddea2757a68a17fa1183049746d01e419de897;hb=56af37b4982b027cac13133eadadfc71ce8947bb;hp=b6e3874907f7d0a368714ff96bc5b7f95929f785;hpb=53597f45307d8a2120e3a0bbe71797b216e8750b;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/respawn.c b/respawn.c index b6e3874..50ddea2 100644 --- a/respawn.c +++ b/respawn.c @@ -73,6 +73,16 @@ VG_STATIC void respawn_chooser_gohome(void){ 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; @@ -173,6 +183,7 @@ VG_STATIC void respawn_chooser_pre_update(void){ 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 ){ @@ -181,8 +192,33 @@ VG_STATIC void respawn_chooser_pre_update(void){ } } - if( respawn_chooser.spawn ){ - vg_line_cross( respawn_chooser.spawn->transform.co, VG__GREEN, 5.0f ); + /* icons + * ---------------------*/ + for( u32 i=0; ient_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; ient_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; ient_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] ); + } } }