(50c0271)
[carveJwlIkooP6JGAAIwe30JlM.git] / ent_route.c
index 1ef9f1dcf208d93a0cb9878058ac4eb5cf28a873..026bf7048ac01237a55526ebceb827f53a99c155 100644 (file)
@@ -1,17 +1,20 @@
-#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;
@@ -27,16 +30,16 @@ static void ent_route_call( world_instance *world, ent_call *call ){
          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 ){
+void ent_route_preupdate( ent_route *route, int active )
+{
    if( !active ) return;
 
    world_instance *world = world_current_instance();
@@ -57,11 +60,14 @@ static void ent_route_preupdate( ent_route *route, int active ){
       world_sfd_compile_active_scores();
    }
 
-   if( button_down( k_srbind_mback ) ){
-      world_entity_unfocus();
+   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_exit_modal();
+      world_entity_clear_focus();
       gui_helper_clear();
       return;
    }
 }
-
-#endif /* ENT_ROUTE_C */