From 2320c21d84801da5730ab5e7021cc94deb0e2435 Mon Sep 17 00:00:00 2001 From: ghostlyzsh Date: Sun, 7 Jan 2024 22:25:33 -0600 Subject: [PATCH] loading bug fixes --- server/src/main.rs | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index 3a3452c473e4fee8e2962de8a720f5a22fe3dd70..e31d993e546709a91dedfd79291085cc74857d17 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -276,25 +276,20 @@ fn on_message( 0.0, ); transform.rotate_z(angle); - let mut entity_id = commands.spawn(PlayerBundle { - part: PartBundle { + let mut entity_id = commands.spawn(( + PartBundle { part_type: PartType::Hearty, transform: TransformBundle::from(transform), flags: PartFlags { attached: false }, }, - player: Player { + Player { addr: *from, username: username.to_string(), input: component::Input::default(), selected: None, save_eligibility: false, }, - attach: Attach { - associated_player: None, - parent: None, - children: [None, None, None, None], - }, - }); + )); entity_id .insert(Collider::cuboid( PART_HALF_SIZE / SCALE, @@ -315,14 +310,19 @@ fn on_message( .insert(RigidBody::Dynamic); let id = entity_id.id().index(); + let entity = entity_id.id(); + let mut attach = Attach { + associated_player: None, + parent: None, + children: [None, None, None, None], + }; if let Some(save) = save { // attempt to decode the savefile if let Ok(savefile) = unpack_savefile(&app_keys.app_key, save) { // HEY! GHOSTLY! THIS SAVE FILE IS VALID! PLEASE LOAD IT! // THANKS! - let entity = entity_id.id(); - load_savefile( + let children = load_savefile( &mut commands, transform, entity, @@ -331,6 +331,7 @@ fn on_message( &mut attached_query, &mut part_query, ); + attach.children = children; } else { let packet = Packet::Message { message_type: packet::MessageType::Error, @@ -345,6 +346,8 @@ fn on_message( } else { // nothing to do } + let mut entity_id = commands.entity(entity); + entity_id.insert(attach); // tell this player the planets let mut planets = Vec::new(); @@ -979,6 +982,7 @@ fn load_savefile( let mut ret = [None, None, None, None]; for (i, child) in children.iter().enumerate() { if let Some(child) = child { + let part_type = PartType::from(child.part_type); //let attachable = can_attach != None; let p_pos = transform.translation; @@ -1023,7 +1027,7 @@ fn load_savefile( module.id() }; - let children = if PartType::from(child.part_type) != PartType::LandingThruster { + let children = if part_type != PartType::LandingThruster { load_savefile( commands, transform, @@ -1067,6 +1071,9 @@ fn load_savefile( .insert(ExternalImpulse::default()) .insert(Velocity::default()) .insert(ReadMassProperties::default()); + if part_type == PartType::Hub { + module.insert(CanAttach(15)); + } let joint = FixedJointBuilder::new() .local_anchor1(vec2(offset.x / SCALE, offset.y / SCALE)) @@ -1074,7 +1081,7 @@ fn load_savefile( module.insert(ImpulseJoint::new(parent, joint)); - if PartType::from(child.part_type) == PartType::LandingThruster { + if part_type == PartType::LandingThruster { let joint = PrismaticJointBuilder::new(Vec2::new(0., 1.)) .local_anchor1(Vec2::new(0., 0.)) .local_anchor2(Vec2::new(0., 0.))