diff --git a/noita-proxy/src/lib.rs b/noita-proxy/src/lib.rs index e2a1c9fd..b0bcf50e 100644 --- a/noita-proxy/src/lib.rs +++ b/noita-proxy/src/lib.rs @@ -1233,7 +1233,7 @@ fn add_per_status_ui( fn peer_role(peer: net::omni::OmniPeerId, netman: &Arc) -> String { if peer == netman.peer.host_id() { tr("player_host") - } else if Some(peer) == netman.peer.my_id() { + } else if peer == netman.peer.my_id() { tr("player_me") } else { tr("player_player") diff --git a/noita-proxy/src/net.rs b/noita-proxy/src/net.rs index 5699349b..3c819a2e 100644 --- a/noita-proxy/src/net.rs +++ b/noita-proxy/src/net.rs @@ -209,17 +209,7 @@ impl NetManager { socket.listen(1)?; socket.set_nonblocking(true)?; let local_server: TcpListener = socket.into(); - for _ in 1..3 { - if self.peer.my_id().is_none() { - info!("Waiting on my_id..."); - thread::sleep(Duration::from_millis(100)); - } else { - break; - } - } - if self.peer.my_id().is_none() { - std::process::exit(1) - } + let is_host = self.is_host(); info!("Is host: {is_host}"); let mut state = NetInnerState { @@ -227,14 +217,14 @@ impl NetManager { recorder: None, world: WorldManager::new( is_host, - self.peer.my_id().unwrap(), + self.peer.my_id(), self.init_settings.save_state.clone(), ), }; let mut last_iter = Instant::now(); // Create appearance files for local player. create_player_png( - self.peer.my_id().unwrap(), + self.peer.my_id(), &self.init_settings.mod_path, &self.init_settings.player_path, &self.init_settings.player_png_desc, @@ -251,10 +241,7 @@ impl NetManager { for id in self.peer.iter_peer_ids() { self.send(id, &NetMsg::EndRun, Reliability::Reliable); } - state.try_ws_write(ws_encode_proxy( - "end_run", - self.peer.my_id().unwrap().to_string(), - )); + state.try_ws_write(ws_encode_proxy("end_run", self.peer.my_id().to_string())); self.end_run(&mut state); self.end_run.store(false, atomic::Ordering::Relaxed); } @@ -287,7 +274,7 @@ impl NetManager { omni::OmniNetworkEvent::PeerConnected(id) => { self.broadcast(&NetMsg::Welcome, Reliability::Reliable); info!("Peer connected {id}"); - if self.peer.my_id() == Some(self.peer.host_id()) { + if self.peer.my_id() == self.peer.host_id() { info!("Sending start game message"); self.send( id, @@ -297,7 +284,7 @@ impl NetManager { Reliability::Reliable, ); } - if id != self.peer.my_id().unwrap() { + if id != self.peer.my_id() { // Create temporary appearance files for new player. create_player_png( id, @@ -332,7 +319,7 @@ impl NetManager { NetMsg::Welcome => {} NetMsg::EndRun => state.try_ws_write(ws_encode_proxy( "end_run", - self.peer.my_id().unwrap().to_string(), + self.peer.my_id().to_string(), )), NetMsg::StartGame { settings } => { *self.settings.lock().unwrap() = settings; @@ -436,8 +423,8 @@ impl NetManager { let settings = self.settings.lock().unwrap(); state.try_ws_write(ws_encode_proxy("seed", settings.seed)); - let value = self.peer.my_id().expect("Has peer id at this point"); - state.try_ws_write(ws_encode_proxy("peer_id", format!("{:016x}", value.0))); + let my_id = self.peer.my_id(); + state.try_ws_write(ws_encode_proxy("peer_id", format!("{:016x}", my_id.0))); state.try_ws_write(ws_encode_proxy( "host_id", format!("{:016x}", self.peer.host_id().0), diff --git a/noita-proxy/src/net/omni.rs b/noita-proxy/src/net/omni.rs index c11916f7..f7d18bae 100644 --- a/noita-proxy/src/net/omni.rs +++ b/noita-proxy/src/net/omni.rs @@ -92,7 +92,7 @@ impl PeerVariant { } } } - + pub(crate) fn flush(&self) { if let PeerVariant::Steam(p) = self { p.flush() @@ -113,10 +113,13 @@ impl PeerVariant { } } - pub(crate) fn my_id(&self) -> Option { + pub(crate) fn my_id(&self) -> OmniPeerId { match self { - PeerVariant::Tangled(p) => p.my_id().map(OmniPeerId::from), - PeerVariant::Steam(p) => Some(p.my_id().into()), + PeerVariant::Tangled(p) => p + .my_id() + .map(OmniPeerId::from) + .expect("Peer id to be available"), + PeerVariant::Steam(p) => p.my_id().into(), } } @@ -161,7 +164,7 @@ impl PeerVariant { pub fn is_host(&self) -> bool { match self { - PeerVariant::Tangled(_) => Some(self.host_id()) == self.my_id(), + PeerVariant::Tangled(_) => self.host_id() == self.my_id(), PeerVariant::Steam(p) => p.is_host(), } }