mirror of
https://github.com/gopher64/gopher64.git
synced 2026-07-11 01:25:20 +02:00
fix netplay start if player 1 leaves (#691)
* fix netplay start if player 1 leaves * more * more
This commit is contained in:
+15
-5
@@ -698,7 +698,6 @@ fn create_session(
|
||||
handle.get_rom_path(),
|
||||
message.player_name.as_ref().unwrap().into(),
|
||||
session.port.unwrap(),
|
||||
true,
|
||||
GameSettings {
|
||||
fullscreen: game_settings.fullscreen,
|
||||
overclock: overclock.parse().unwrap(),
|
||||
@@ -816,7 +815,6 @@ fn join_session(
|
||||
handle.get_rom_path(),
|
||||
message.player_name.as_ref().unwrap().into(),
|
||||
session.port.unwrap(),
|
||||
false,
|
||||
GameSettings {
|
||||
fullscreen,
|
||||
overclock: overclock.parse().unwrap(),
|
||||
@@ -863,7 +861,6 @@ fn setup_wait_window(
|
||||
rom_path: slint::SharedString,
|
||||
player_name: slint::SharedString,
|
||||
port: i32,
|
||||
can_start: bool,
|
||||
game_settings: GameSettings,
|
||||
peer_addr: slint::SharedString,
|
||||
weak_app: slint::Weak<AppWindow>,
|
||||
@@ -877,7 +874,6 @@ fn setup_wait_window(
|
||||
wait.set_game_name(game_name);
|
||||
wait.set_rom_path(rom_path);
|
||||
wait.set_port(port);
|
||||
wait.set_can_start(can_start);
|
||||
wait.set_ping("Unknown".into());
|
||||
|
||||
let sender = netplay_write_sender.clone();
|
||||
@@ -1034,8 +1030,15 @@ fn setup_wait_window(
|
||||
.unwrap();
|
||||
}
|
||||
"reply_players" => {
|
||||
let local_player = local_player.clone();
|
||||
weak.upgrade_in_event_loop(move |handle| {
|
||||
if let Some(player_names) = response.player_names {
|
||||
if local_player == player_names[0] {
|
||||
handle.set_can_start(true);
|
||||
} else {
|
||||
handle.set_can_start(false);
|
||||
}
|
||||
|
||||
let players_vec: slint::VecModel<slint::SharedString> =
|
||||
slint::VecModel::default();
|
||||
for player in player_names {
|
||||
@@ -1101,8 +1104,15 @@ fn setup_wait_window(
|
||||
.unwrap();
|
||||
return;
|
||||
} else {
|
||||
let local_player = local_player.clone();
|
||||
weak.upgrade_in_event_loop(move |handle| {
|
||||
handle.set_can_start(can_start);
|
||||
if let Some(p0) = handle.get_players().row_data(0) {
|
||||
if p0 == local_player {
|
||||
handle.set_can_start(true);
|
||||
} else {
|
||||
handle.set_can_start(false);
|
||||
}
|
||||
}
|
||||
if let Some(message) = response.message {
|
||||
show_netplay_error(message);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user