Make my_id not return an Option

This commit is contained in:
IQuant 2024-10-13 12:25:33 +03:00
parent 17103adc97
commit 959e7fc88e
3 changed files with 18 additions and 28 deletions

View file

@ -1233,7 +1233,7 @@ fn add_per_status_ui(
fn peer_role(peer: net::omni::OmniPeerId, netman: &Arc<net::NetManager>) -> String { fn peer_role(peer: net::omni::OmniPeerId, netman: &Arc<net::NetManager>) -> String {
if peer == netman.peer.host_id() { if peer == netman.peer.host_id() {
tr("player_host") tr("player_host")
} else if Some(peer) == netman.peer.my_id() { } else if peer == netman.peer.my_id() {
tr("player_me") tr("player_me")
} else { } else {
tr("player_player") tr("player_player")

View file

@ -209,17 +209,7 @@ impl NetManager {
socket.listen(1)?; socket.listen(1)?;
socket.set_nonblocking(true)?; socket.set_nonblocking(true)?;
let local_server: TcpListener = socket.into(); 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(); let is_host = self.is_host();
info!("Is host: {is_host}"); info!("Is host: {is_host}");
let mut state = NetInnerState { let mut state = NetInnerState {
@ -227,14 +217,14 @@ impl NetManager {
recorder: None, recorder: None,
world: WorldManager::new( world: WorldManager::new(
is_host, is_host,
self.peer.my_id().unwrap(), self.peer.my_id(),
self.init_settings.save_state.clone(), self.init_settings.save_state.clone(),
), ),
}; };
let mut last_iter = Instant::now(); let mut last_iter = Instant::now();
// Create appearance files for local player. // Create appearance files for local player.
create_player_png( create_player_png(
self.peer.my_id().unwrap(), self.peer.my_id(),
&self.init_settings.mod_path, &self.init_settings.mod_path,
&self.init_settings.player_path, &self.init_settings.player_path,
&self.init_settings.player_png_desc, &self.init_settings.player_png_desc,
@ -251,10 +241,7 @@ impl NetManager {
for id in self.peer.iter_peer_ids() { for id in self.peer.iter_peer_ids() {
self.send(id, &NetMsg::EndRun, Reliability::Reliable); self.send(id, &NetMsg::EndRun, Reliability::Reliable);
} }
state.try_ws_write(ws_encode_proxy( state.try_ws_write(ws_encode_proxy("end_run", self.peer.my_id().to_string()));
"end_run",
self.peer.my_id().unwrap().to_string(),
));
self.end_run(&mut state); self.end_run(&mut state);
self.end_run.store(false, atomic::Ordering::Relaxed); self.end_run.store(false, atomic::Ordering::Relaxed);
} }
@ -287,7 +274,7 @@ impl NetManager {
omni::OmniNetworkEvent::PeerConnected(id) => { omni::OmniNetworkEvent::PeerConnected(id) => {
self.broadcast(&NetMsg::Welcome, Reliability::Reliable); self.broadcast(&NetMsg::Welcome, Reliability::Reliable);
info!("Peer connected {id}"); 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"); info!("Sending start game message");
self.send( self.send(
id, id,
@ -297,7 +284,7 @@ impl NetManager {
Reliability::Reliable, Reliability::Reliable,
); );
} }
if id != self.peer.my_id().unwrap() { if id != self.peer.my_id() {
// Create temporary appearance files for new player. // Create temporary appearance files for new player.
create_player_png( create_player_png(
id, id,
@ -332,7 +319,7 @@ impl NetManager {
NetMsg::Welcome => {} NetMsg::Welcome => {}
NetMsg::EndRun => state.try_ws_write(ws_encode_proxy( NetMsg::EndRun => state.try_ws_write(ws_encode_proxy(
"end_run", "end_run",
self.peer.my_id().unwrap().to_string(), self.peer.my_id().to_string(),
)), )),
NetMsg::StartGame { settings } => { NetMsg::StartGame { settings } => {
*self.settings.lock().unwrap() = settings; *self.settings.lock().unwrap() = settings;
@ -436,8 +423,8 @@ impl NetManager {
let settings = self.settings.lock().unwrap(); let settings = self.settings.lock().unwrap();
state.try_ws_write(ws_encode_proxy("seed", settings.seed)); state.try_ws_write(ws_encode_proxy("seed", settings.seed));
let value = self.peer.my_id().expect("Has peer id at this point"); let my_id = self.peer.my_id();
state.try_ws_write(ws_encode_proxy("peer_id", format!("{:016x}", value.0))); state.try_ws_write(ws_encode_proxy("peer_id", format!("{:016x}", my_id.0)));
state.try_ws_write(ws_encode_proxy( state.try_ws_write(ws_encode_proxy(
"host_id", "host_id",
format!("{:016x}", self.peer.host_id().0), format!("{:016x}", self.peer.host_id().0),

View file

@ -92,7 +92,7 @@ impl PeerVariant {
} }
} }
} }
pub(crate) fn flush(&self) { pub(crate) fn flush(&self) {
if let PeerVariant::Steam(p) = self { if let PeerVariant::Steam(p) = self {
p.flush() p.flush()
@ -113,10 +113,13 @@ impl PeerVariant {
} }
} }
pub(crate) fn my_id(&self) -> Option<OmniPeerId> { pub(crate) fn my_id(&self) -> OmniPeerId {
match self { match self {
PeerVariant::Tangled(p) => p.my_id().map(OmniPeerId::from), PeerVariant::Tangled(p) => p
PeerVariant::Steam(p) => Some(p.my_id().into()), .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 { pub fn is_host(&self) -> bool {
match self { 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(), PeerVariant::Steam(p) => p.is_host(),
} }
} }