Skip to content

Commit ce29677

Browse files
author
Sunnickel
committed
1 parent 96c7fd5 commit ce29677

File tree

2 files changed

+22
-10
lines changed

2 files changed

+22
-10
lines changed

src/bin/src/systems/connection_killer.rs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,21 @@ pub fn connection_killer(
1111
mut cmd: Commands,
1212
state: Res<GlobalStateResource>,
1313
) {
14+
let mut disconnecting_player: Option<(Entity, &StreamWriter, &PlayerIdentity)> = None;
1415
while let Some((disconnecting_entity, reason)) = state.0.players.disconnection_queue.pop() {
15-
let disconnecting_player: &(Entity, &StreamWriter, &PlayerIdentity) =
16-
&query.get(disconnecting_entity).unwrap();
16+
if query.contains(disconnecting_entity) && disconnecting_player.is_none() {
17+
let entity_result = query.get(disconnecting_entity);
18+
19+
match entity_result {
20+
Ok(player_result) => {
21+
disconnecting_player = Some(player_result);
22+
}
23+
Err(e) => {
24+
disconnecting_player = None;
25+
trace!("Disconnecting player not in query: {}", e);
26+
}
27+
}
28+
}
1729

1830
for (entity, conn, player_identity) in query.iter() {
1931
if disconnecting_entity == entity {
@@ -47,7 +59,9 @@ pub fn connection_killer(
4759
);
4860
}
4961
} else {
50-
system_messages::player_leave::handle(disconnecting_player.2, entity);
62+
if disconnecting_player.is_some() {
63+
system_messages::player_leave::handle(disconnecting_player.unwrap().2, entity);
64+
}
5165
}
5266
cmd.entity(entity).despawn();
5367
}

src/bin/src/systems/new_connections.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,12 @@ pub fn accept_new_connections(
6161
);
6262

6363
for player in &state.0.players.player_list {
64-
if player
65-
.value()
66-
.0
67-
.eq(&new_connection.player_identity.uuid.as_u128())
68-
{
69-
continue;
64+
if player.value().0 != new_connection.player_identity.uuid.as_u128() {
65+
system_messages::player_join::handle(
66+
&new_connection.player_identity,
67+
*player.key(),
68+
);
7069
}
71-
system_messages::player_join::handle(&new_connection.player_identity, *player.key());
7270
}
7371

7472
if let Err(err) = return_sender.send(entity.id()) {

0 commit comments

Comments
 (0)