X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=gameserver.c;h=ff8d63552384903277721e25b43318b9c76fd847;hb=d680579754c876a74bf77ac74a224900ce0b3ff9;hp=e2082cb39fc77f82ff2d0664a235b2aad0cfa6f3;hpb=5fba3602f053116a8e3849bc12c03198d6d7461c;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/gameserver.c b/gameserver.c index e2082cb..ff8d635 100644 --- a/gameserver.c +++ b/gameserver.c @@ -77,7 +77,7 @@ static void gameserver_player_join( int index ){ SteamAPI_ISteamNetworkingSockets_SendMessageToConnection( hSteamNetworkingSockets, joiner->connection, - &join, sizeof(join), k_nSteamNetworkingSend_Reliable, NULL ); + &init, sizeof(init), k_nSteamNetworkingSend_Reliable, NULL ); } } @@ -296,29 +296,41 @@ static int packet_minsize( SteamNetworkingMessage_t *msg, u32 size ){ static void gameserver_rx_200_300( SteamNetworkingMessage_t *msg ){ netmsg_blank *tmp = msg->m_pData; + int client_id = gameserver_client_index( msg->m_conn ); + if( client_id == -1 ) return; + if( tmp->inetmsg_id == k_inetmsg_playerusername ){ if( !packet_minsize( msg, sizeof(netmsg_playerusername) )) return; - int client_id = gameserver_client_index( msg->m_conn ); - if( client_id != -1 ){ - struct gameserver_client *client = &gameserver.clients[ client_id ]; - netmsg_playerusername *src = msg->m_pData; - - vg_strncpy( src->username, client->username, sizeof(client->username), - k_strncpy_always_add_null ); - - /* update other users about this change */ - netmsg_playerusername msg; - memset( &msg, 0, sizeof(msg) ); - msg.inetmsg_id = k_inetmsg_playerusername; - msg.index = client_id; - vg_strncpy( client->username, msg.username, sizeof(msg.username), - k_strncpy_always_add_null ); - - gameserver_send_to_all( client_id, &msg, sizeof(msg), - k_nSteamNetworkingSend_Reliable ); - } + struct gameserver_client *client = &gameserver.clients[ client_id ]; + netmsg_playerusername *src = msg->m_pData; + + vg_info( "%d change name '%s' -> '%s'\n", + client_id, client->username, src->username ); + + vg_strncpy( src->username, client->username, sizeof(client->username), + k_strncpy_always_add_null ); + + /* update other users about this change */ + netmsg_playerusername msg; + memset( &msg, 0, sizeof(msg) ); + msg.inetmsg_id = k_inetmsg_playerusername; + msg.index = client_id; + vg_strncpy( client->username, msg.username, sizeof(msg.username), + k_strncpy_always_add_null ); + + gameserver_send_to_all( client_id, &msg, sizeof(msg), + k_nSteamNetworkingSend_Reliable ); + } + else if( tmp->inetmsg_id == k_inetmsg_playerframe ){ + /* propogate */ + + netmsg_playerframe *frame = alloca(msg->m_cbSize); + memcpy( frame, msg->m_pData, msg->m_cbSize ); + frame->client = client_id; + gameserver_send_to_all( client_id, frame, msg->m_cbSize, + k_nSteamNetworkingSend_Unreliable ); } }