X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=ent_route.c;h=8564eed3c5c8c60400c2eb69e5a71b7ad599e1b1;hb=HEAD;hp=fa1d66900c452edbf58f5641cf8351f5d1a574c7;hpb=d27f8a570e5cfad1974b4be303888e17ff846406;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/ent_route.c b/ent_route.c index fa1d669..8564eed 100644 --- a/ent_route.c +++ b/ent_route.c @@ -1,45 +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" ); + 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" ); + vg_strcat( &text, "All time" ); if( gui_new_helper( input_button_list[k_srbind_mback], &text ) ) - vg_strcat( &text, "exit" ); + 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 ) ) @@ -60,11 +65,11 @@ static void ent_route_preupdate( ent_route *route, int active ){ 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 */