X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world_sfd.c;h=a5ba3f6d82981fa6103fc51b2546a6118ef6f8e6;hb=1d06671f87a9d24596fc6808d8e0db889a818750;hp=9fe2d68e76743060909b200e8ef97fc54152c0c3;hpb=342fcbf6fda017bdd38d56ce0fa7c9e59e589f3b;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world_sfd.c b/world_sfd.c index 9fe2d68..a5ba3f6 100644 --- a/world_sfd.c +++ b/world_sfd.c @@ -59,8 +59,43 @@ VG_STATIC void sfd_encode( u32 row, const char *str ) } } -VG_STATIC void sfd_update(void) -{ +VG_STATIC void world_sfd_update( world_instance *world, v3f pos ){ + if( mdl_arrcount( &world->ent_route ) ){ + u32 closest = 0; + float min_dist = INFINITY; + + for( u32 i=0; ient_route ); i++ ){ + ent_route *route = mdl_arritm( &world->ent_route, i ); + float dist = v3_dist2( route->board_transform[3], pos ); + + if( dist < min_dist ){ + min_dist = dist; + closest = i; + } + } + + if( (world_sfd.active_route_board != closest) || network_scores_updated ) + { + network_scores_updated = 0; + world_sfd.active_route_board = closest; + + ent_route *route = mdl_arritm( &world->ent_route, closest ); + u32 id = route->official_track_id; + + if( id != 0xffffffff ){ + struct netmsg_board *local_board = + &scoreboard_client_data.boards[id]; + + for( int i=0; i<13; i++ ){ + sfd_encode( i, &local_board->data[27*i] ); + } + }else{ + sfd_encode( 0, mdl_pstr( &world->meta, route->pstr_name ) ); + sfd_encode( 1, "No data" ); + } + } + } + for( int i=0; i