X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_remote.c;h=d1bb149d7d70140455a8e0cc19986896a80e1963;hb=5fba3602f053116a8e3849bc12c03198d6d7461c;hp=d9ee7b8243a8f95e190add9c2075dc802ec160d9;hpb=46f4e9ee87dc67402166e4c6b05efbe922cd7574;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_remote.c b/player_remote.c index d9ee7b8..d1bb149 100644 --- a/player_remote.c +++ b/player_remote.c @@ -12,11 +12,12 @@ static void player_remote_clear( struct network_player *player ){ player->subsystem = k_player_subsystem_invalid; } -static void player_remote_packet( SteamNetworkingMessage_t *msg ){ +static void player_remote_rx_200_300( SteamNetworkingMessage_t *msg ){ netmsg_blank *tmp = msg->m_pData; if( tmp->inetmsg_id == k_inetmsg_playerjoin ){ netmsg_playerjoin *playerjoin = msg->m_pData; + if( !packet_minsize( msg, sizeof(*playerjoin) )) return; if( playerjoin->index < vg_list_size(netplayers.list) ){ struct network_player *player = &netplayers.list[ playerjoin->index ]; @@ -26,6 +27,11 @@ static void player_remote_packet( SteamNetworkingMessage_t *msg ){ /* TODO: interpret the uids */ player->board_view_slot = 0; player->playermodel_view_slot = 0; + + vg_strncpy( playerjoin->username, player->username, + sizeof(player->username), k_strncpy_always_add_null ); + + vg_info( "#%u joined with name: %s\n", player->username ); } else { vg_error( "inetmsg_playerjoin: player index out of range\n" ); @@ -33,11 +39,28 @@ static void player_remote_packet( SteamNetworkingMessage_t *msg ){ } else if( tmp->inetmsg_id == k_inetmsg_playerleave ){ netmsg_playerleave *playerleave = msg->m_pData; + if( !packet_minsize( msg, sizeof(*playerleave) )) return; if( playerleave->index < vg_list_size(netplayers.list) ){ struct network_player *player = &netplayers.list[ playerleave->index ]; player_remote_unwatch( player ); player->active = 0; + vg_info( "player leave (%d)\n", playerleave->index ); + } + else { + vg_error( "inetmsg_playerleave: player index out of range\n" ); + } + } + else if( tmp->inetmsg_id == k_inetmsg_playerusername ){ + netmsg_playerusername *update = msg->m_pData; + if( !packet_minsize( msg, sizeof(*update) )) return; + + if( update->index < vg_list_size(netplayers.list) ){ + struct network_player *player = &netplayers.list[ update->index ]; + vg_strncpy( update->username, player->username, + sizeof(player->username), k_strncpy_always_add_null ); + + vg_info( "#%u changed username: %s\n", player->username ); } else { vg_error( "inetmsg_playerleave: player index out of range\n" ); @@ -77,6 +100,7 @@ static void remote_player_network_imgui(void){ snprintf( buf, 512, "Network: %s", netstatus ); ui_info( panel, buf ); ui_info( panel, "---------------------" ); + ui_info( panel, "#-1: localplayer" ); for( u32 i=0; i