~starkingdoms/starkingdoms

69dfdb31d78b22ad6e6f392ceabf81536033750d — core 1 year, 11 months ago 6c99092 + ac6c25d
Merge branch 'bevy_rewrite' of gitlab.com:starkingdoms.tk/starkingdoms.tk into bevy_rewrite
2 files changed, 50 insertions(+), 0 deletions(-)

M server/src/component.rs
M server/src/main.rs
M server/src/component.rs => server/src/component.rs +1 -0
@@ 63,6 63,7 @@ pub struct Player {
    pub username: String,
    pub input: Input,
    pub selected: Option<Entity>,
    pub save_eligibility: bool,
}

#[derive(Bundle)]

M server/src/main.rs => server/src/main.rs +49 -0
@@ 85,6 85,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();


@@ 287,6 288,7 @@ fn on_message(
                                username: username.to_string(),
                                input: component::Input::default(),
                                selected: None,
                                save_eligibility: false,
                            },
                            attach: Attach {
                                associated_player: None,


@@ 1395,6 1397,53 @@ 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>>,