use avian2d::prelude::*; use bevy::prelude::*; use crate::{lunar::DestPlanet, Stickable, TouchdownGoal}; #[derive(Component)] pub struct Player { pub velocity: f32, pub display_name: Text2d, pub mass_kg: f32, } pub struct ControlledObject {} enum Direction { Up, Down, Left, Right, None, } fn map_key_to_movement(key: &KeyCode) -> Direction { match key { KeyCode::KeyW => Direction::Up, KeyCode::KeyS => Direction::Down, KeyCode::KeyA => Direction::Left, KeyCode::KeyD => Direction::Right, _ => Direction::None, } } pub fn check_transition_level( mut has_touched_down: ResMut, player_transform: Query<&Transform, (With, Without)>, moon_transform: Query<(Entity, &DestPlanet, &Transform), (With, Without)> ) { if has_touched_down.reached {return;} let (moon_e, moon, moon_t) = moon_transform.single(); let player_t = player_transform.single(); let shroud_padding = 0.1 + moon.radius; let bounds = ( Vec2 { x: moon_t.translation.x - shroud_padding, y: moon_t.translation.y - shroud_padding, }, Vec2 { x: moon_t.translation.x + shroud_padding, y: moon_t.translation.y + shroud_padding, } ); if player_t.translation.x > bounds.0.x && player_t.translation.x < bounds.1.x && player_t.translation.y > bounds.0.y && player_t.translation.y < bounds.1.y { info!("CAN TRANSITION TO NEXT LEVEL"); // has_touched_down.reached = true; // commands.entity(moon_e).despawn(); } } pub fn camera_follow_player( goal: Res, mut camera_transform: Query<&mut Transform, (With, Without)>, player_transform: Query<&Transform, (With, Without)>, ) { if goal.reached {return;} let mut camera_t = camera_transform.single_mut(); let player_t = player_transform.single(); camera_t.translation = player_t.translation; } pub fn player_movements( time: Res