X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=ent_route.c;h=f5b51c5ec2ce520c74860ee04897d88ca214ef89;hb=304647a7672165dd35ffe54884ed9aedcc9bf363;hp=a11464093b6646c84838a9e5d110596a2d53f92e;hpb=4eb81766e4e7c54599b057ebf57b7fab01cd0726;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/ent_route.c b/ent_route.c index a114640..f5b51c5 100644 --- a/ent_route.c +++ b/ent_route.c @@ -1,31 +1,50 @@ -#ifndef ENT_ROUTE_C -#define ENT_ROUTE_C - #include "ent_route.h" #include "input.h" #include "gui.h" -static void ent_route_call( world_instance *world, ent_call *call ){ +struct global_ent_route global_ent_route; + +entity_call_result ent_route_call( world_instance *world, ent_call *call ) +{ u32 index = mdl_entity_id_id( call->id ); ent_route *route = mdl_arritm( &world->ent_route, index ); - if( call->function == 0 ){ /* view() */ - if( localplayer.subsystem == k_player_subsystem_walk ){ - world_entity_focus( call->id ); + if( call->function == 0 ) + { /* view() */ + if( localplayer.subsystem == k_player_subsystem_walk ) + { + world_entity_set_focus( call->id ); + world_entity_focus_modal(); + + gui_helper_clear(); + vg_str text; + + if( (global_ent_route.helper_weekly = + gui_new_helper( input_button_list[k_srbind_mleft], &text ))) + vg_strcat( &text, "weekly" ); + + if( (global_ent_route.helper_alltime = + gui_new_helper( input_button_list[k_srbind_mright], &text ))) + vg_strcat( &text, "all time" ); + + if( gui_new_helper( input_button_list[k_srbind_mback], &text ) ) + vg_strcat( &text, "exit" ); } + + return k_entity_call_result_OK; } - else { - /* TODO: Comrpession */ - vg_print_backtrace(); - vg_error( "Unhandled function id: %u\n", call->function ); - } + + return k_entity_call_result_unhandled; } -/* TODO: these should recieve the world instance */ -static void ent_route_preupdate( ent_route *route, int active ){ - if( !active ) return; +void ent_route_preupdate( ent_focus_context *ctx ) +{ + if( !ctx->active ) + return; + + world_instance *world = ctx->world; + ent_route *route = mdl_arritm( &world->ent_route, ctx->index ); - world_instance *world = world_current_instance(); u32 cam_id = 0; if( __builtin_expect( world->meta.info.version >= 103, 1 ) ) @@ -33,15 +52,24 @@ static void ent_route_preupdate( ent_route *route, int active ){ world_entity_focus_camera( world, cam_id ); - gui_helper_action( button_display_string( k_srbind_mleft ), "weekly" ); - gui_helper_action( button_display_string( k_srbind_mright ), "all time" ); + if( button_down( k_srbind_mleft ) ){ + world_sfd.view_weekly = 1; + world_sfd_compile_active_scores(); + } - gui_helper_action( button_display_string( k_srbind_mback ), "exit" ); + if( button_down( k_srbind_mright ) ){ + world_sfd.view_weekly = 0; + world_sfd_compile_active_scores(); + } + + global_ent_route.helper_alltime->greyed =!world_sfd.view_weekly; + global_ent_route.helper_weekly->greyed = world_sfd.view_weekly; - if( button_down( k_srbind_mback ) ){ - world_entity_unfocus(); + if( button_down( k_srbind_mback ) ) + { + world_entity_exit_modal(); + world_entity_clear_focus(); + gui_helper_clear(); return; } } - -#endif /* ENT_ROUTE_C */