X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_remote.c;h=6358daa94afe2df6fa3c992a6571a714c6d531bb;hb=2179a91415c4d0726fd134ad942acfc0515844eb;hp=3b7e6a6e88ef662c0a36420e3b69b210a5672656;hpb=7e1fe6c7931ba4492aa10ac5eebc316b74fb5dac;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_remote.c b/player_remote.c index 3b7e6a6..6358daa 100644 --- a/player_remote.c +++ b/player_remote.c @@ -6,6 +6,8 @@ #include "font.h" #include "gui.h" +static i32 k_show_own_name = 0; + static void player_remote_clear( struct network_player *player ){ addon_cache_unwatch( k_addon_type_player, player->playermodel_view_slot ); addon_cache_unwatch( k_addon_type_board, player->board_view_slot ); @@ -56,6 +58,14 @@ static void relink_all_remote_player_worlds(void){ } } +static void player_remote_update_friendflags( struct network_player *remote ){ + ISteamFriends *hSteamFriends = SteamAPI_SteamFriends(); + remote->isfriend = SteamAPI_ISteamFriends_HasFriend( hSteamFriends, + remote->steamid, k_EFriendFlagImmediate ); + remote->isblocked = SteamAPI_ISteamFriends_HasFriend( hSteamFriends, + remote->steamid, k_EFriendFlagBlocked ); +} + static void player_remote_rx_200_300( SteamNetworkingMessage_t *msg ){ netmsg_blank *tmp = msg->m_pData; @@ -67,6 +77,8 @@ static void player_remote_rx_200_300( SteamNetworkingMessage_t *msg ){ struct network_player *player = &netplayers.list[ playerjoin->index ]; player_remote_clear( player ); player->active = 1; + player->steamid = playerjoin->steamid; + player_remote_update_friendflags( player ); /* TODO: interpret the uids */ player->board_view_slot = 0; @@ -78,7 +90,8 @@ static void player_remote_rx_200_300( SteamNetworkingMessage_t *msg ){ buf->frames[i].active = 0; } - vg_info( "#%u joined\n", playerjoin->index ); + vg_info( "#%u joined friend: %d, blocked: %d\n", + playerjoin->index, player->isfriend, player->isblocked ); } else { vg_error( "inetmsg_playerjoin: player index out of range\n" ); @@ -578,7 +591,7 @@ static void render_remote_players( world_instance *world, camera *cam ){ for( u32 i=0; iactive ) continue; + if( !player->active || player->isblocked ) continue; if( player->active_world != world ) continue; struct player_avatar *av = localplayer.playeravatar; @@ -628,13 +641,15 @@ static void render_remote_players_tags( world_instance *world, camera *cam ){ font3d_bind( &gui.font, k_font_shader_default, 1, NULL, &skaterift.cam ); font3d_setcolour( (v4f){1.0f,1.0f,1.0f,1.0f} ); - render_remote_player_nametag( - localplayer.final_mtx[0][3], - steam_username_at_startup ); + if( k_show_own_name ){ + render_remote_player_nametag( + localplayer.final_mtx[0][3], + steam_username_at_startup ); + } for( u32 i=0; iactive ) continue; + if( !player->active || player->isblocked ) continue; if( player->active_world != world ) continue; struct player_avatar *av = localplayer.playeravatar; @@ -647,6 +662,8 @@ static void render_remote_players_tags( world_instance *world, camera *cam ){ } static void remote_players_init(void){ + vg_console_reg_var( "k_show_own_name", &k_show_own_name, + k_var_dtype_i32, 0 ); for( u32 i=0; iactive || !player->isfriend ) continue; + + ui_rect box = { x, y, width, height }; + remote_player_gui_info( box, player->username, "", 0, 0 ); + y += height + gap; + } +}