diff --git a/rust/src/net/network_manager.rs b/rust/src/net/network_manager.rs index 196b8ad..6b9b119 100644 --- a/rust/src/net/network_manager.rs +++ b/rust/src/net/network_manager.rs @@ -132,6 +132,8 @@ impl NetworkManager { pub fn lobby_joined(); #[signal] pub fn on_client_disconnected(error: GString); + #[signal] + pub fn on_error_hosting_server(error: GString); fn poll(&mut self) -> Option> { let mut cli = CommandLinePanel::singleton(); @@ -200,6 +202,11 @@ impl NetworkManager { Err(err) => { cli.bind_mut() .publish_message(format!("Error hosting server: {}", err), CliColor::Error); + self.run_deferred(move |s| { + s.signals() + .on_error_hosting_server() + .emit(&format!("{}", err)) + }); } } } diff --git a/rust/src/ui/main_menu.rs b/rust/src/ui/main_menu.rs index b9fd736..f652b36 100644 --- a/rust/src/ui/main_menu.rs +++ b/rust/src/ui/main_menu.rs @@ -73,6 +73,13 @@ impl INode3D for MainMenu { s.show_popup("Error", &msg.to_string(), true); } }); + NetworkManager::singleton() + .bind_mut() + .signals() + .on_error_hosting_server() + .connect_other(self, |s, msg| { + s.show_popup("Error Hosting Server", &msg.to_string(), true); + }); } fn process(&mut self, _delta: f64) {