/* update the joining user about current connections */
- netmsg_playerusername *username = alloca( sizeof(netmsg_playerusername) +
- NETWORK_USERNAME_MAX );
+ netmsg_playerusername *username =
+ alloca( sizeof(netmsg_playerusername) + NETWORK_USERNAME_MAX );
username->inetmsg_id = k_inetmsg_playerusername;
+ netmsg_playeritem *item =
+ alloca( sizeof(netmsg_playeritem) + ADDON_UID_MAX );
+ item->inetmsg_id = k_inetmsg_playeritem;
+
for( int i=0; i<vg_list_size(gameserver.clients); i++ ){
struct gameserver_client *client = &gameserver.clients[i];
SteamAPI_ISteamNetworkingSockets_SendMessageToConnection(
hSteamNetworkingSockets, joiner->connection,
username, size, k_nSteamNetworkingSend_Reliable, NULL );
+
+ /* items */
+ chs = vg_strncpy( client->item_player, item->uid, ADDON_UID_MAX,
+ k_strncpy_always_add_null );
+ item->type = k_addon_type_player;
+ size = sizeof(netmsg_playeritem) + chs + 1;
+ SteamAPI_ISteamNetworkingSockets_SendMessageToConnection(
+ hSteamNetworkingSockets, joiner->connection,
+ item, size, k_nSteamNetworkingSend_Reliable, NULL );
+
+ chs = vg_strncpy( client->item_board, item->uid, ADDON_UID_MAX,
+ k_strncpy_always_add_null );
+ item->type = k_addon_type_board;
+ size = sizeof(netmsg_playeritem) + chs + 1;
+ SteamAPI_ISteamNetworkingSockets_SendMessageToConnection(
+ hSteamNetworkingSockets, joiner->connection,
+ item, size, k_nSteamNetworkingSend_Reliable, NULL );
}
}
}
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 );
}
+ else if( tmp->inetmsg_id == k_inetmsg_playeritem ){
+ netmsg_playeritem *item = alloca(msg->m_cbSize);
+ memcpy( item, msg->m_pData, msg->m_cbSize );
+ item->client = client_id;
+
+ vg_info( "Client #%u equiped: [%u] %s\n",
+ item->client, item->type, item->uid );
+
+ gameserver_send_to_all( client_id, item, msg->m_cbSize,
+ k_nSteamNetworkingSend_Reliable );
+ }
}
#if 0