@@ 63,6 63,7 @@ pub struct Player {
pub username: String,
pub input: Input,
pub selected: Option<Entity>,
+ pub save_eligibility: bool,
}
#[derive(Bundle)]
@@ 80,6 80,7 @@ fn main() {
FixedUpdate,
(break_modules, gravity_update, player_input_update).chain(),
)
+ .add_systems(FixedUpdate, save_eligibility)
.add_systems(FixedUpdate, convert_modules)
//.insert_resource(Time::<Fixed>::from_seconds(1.0/20.0))
.run();
@@ 263,6 264,7 @@ fn on_message(
username: username.to_string(),
input: component::Input::default(),
selected: None,
+ save_eligibility: false,
},
attach: Attach {
associated_player: None,
@@ 1360,6 1362,57 @@ fn break_modules(
}
}
+fn save_eligibility(
+ rapier_context: Res<RapierContext>,
+ planet_query: Query<(Entity, &PlanetType, &Children)>,
+ mut player_query: Query<&mut Player>,
+ mut packet_send: EventWriter<ServerEvent>,
+) {
+ for (_planet_entity, _planet_type, children) in &planet_query {
+ for (entity1, entity2, intersecting) in
+ rapier_context.intersections_with(*children.first().unwrap())
+ {
+ if intersecting {
+ let other = if *children.first().unwrap() == entity1 {
+ entity2
+ } else {
+ entity1
+ };
+ if player_query.contains(other) {
+ let mut player = player_query.get_mut(other).unwrap();
+ if player.save_eligibility != true {
+ let packet = Packet::SaveEligibility {
+ eligible: true
+ };
+ let buf = serde_json::to_vec(&packet).unwrap();
+
+ packet_send.send(ServerEvent::Send(player.addr, MessageType::Text, buf));
+ }
+ player.save_eligibility = true;
+ }
+ } else {
+ let other = if *children.first().unwrap() == entity1 {
+ entity2
+ } else {
+ entity1
+ };
+ if player_query.contains(other) {
+ let mut player = player_query.get_mut(other).unwrap();
+ if player.save_eligibility != false {
+ let packet = Packet::SaveEligibility {
+ eligible: false
+ };
+ let buf = serde_json::to_vec(&packet).unwrap();
+
+ packet_send.send(ServerEvent::Send(player.addr, MessageType::Text, buf));
+ }
+ player.save_eligibility = false;
+ }
+ }
+ }
+ }
+}
+
fn on_close(
player_query: Query<(Entity, &Player, &Attach)>,
attached_query: Query<&Attach, With<PartType>>,