From d6b46037b433c8370d6e99ed41d015bf92e1c6ff Mon Sep 17 00:00:00 2001 From: Logan McNaughton <848146+loganmc10@users.noreply.github.com> Date: Wed, 24 Jun 2026 22:44:38 +0200 Subject: [PATCH] update netplay connection (#1118) --- src/netplay.rs | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/netplay.rs b/src/netplay.rs index 5535539..190b57a 100644 --- a/src/netplay.rs +++ b/src/netplay.rs @@ -442,17 +442,29 @@ pub fn init( device.cpu.running = true; while device.cpu.running { - socket.update_peers(); - let peers = socket + if socket + .update_peers() + .iter() + .any(|(_, peer_state)| *peer_state == matchbox_socket::PeerState::Disconnected) + { + // if someone has disconnected, reset the timeout + now = std::time::Instant::now(); + } + + let connected_peers = socket .connected_peers() .collect::>(); - if peers.len() == netplay_config.number_of_players - 1 { + if connected_peers.len() == netplay_config.number_of_players - 1 { player_numbers.insert(netplay_config.player_number, None); - send_player_number(socket.channel_mut(1), &peers, netplay_config.player_number); + send_player_number( + socket.channel_mut(1), + &connected_peers, + netplay_config.player_number, + ); get_player_numbers(socket.channel_mut(1), &mut player_numbers); if player_numbers.len() == netplay_config.number_of_players - && verify_peers(&peers, &player_numbers) + && verify_peers(&connected_peers, &player_numbers) { break; } @@ -465,7 +477,10 @@ pub fn init( if message_timer.elapsed() > std::time::Duration::from_secs(4) { ui::video::onscreen_message( - "Still connecting to netplay peers...\nPlease wait...", + &format!( + "Still connecting to {} netplay peer(s)...\nPlease wait...", + netplay_config.number_of_players - player_numbers.len() + ), ui::video::MESSAGE_LENGTH_MESSAGE_SHORT, ); message_timer = std::time::Instant::now();