move g-force gauge to speedometer

This commit is contained in:
yuni 2024-05-08 01:35:28 +02:00
parent 4b9ed44dd4
commit 1140e1eaca

View file

@ -528,6 +528,7 @@ fn setup(
)); ));
}); });
let mut bundle_speedometer_text = TextBundle::from_sections([ let mut bundle_speedometer_text = TextBundle::from_sections([
TextSection::new("", style_speedometer.clone()), // speed relative to target
TextSection::new("", style_speedometer.clone()), // speed relative to target TextSection::new("", style_speedometer.clone()), // speed relative to target
TextSection::new("", style_speedometer.clone()), // speed relative to orbit TextSection::new("", style_speedometer.clone()), // speed relative to orbit
]).with_style(Style { ]).with_style(Style {
@ -622,6 +623,7 @@ fn update_dashboard(
fn update_speedometer( fn update_speedometer(
timer: ResMut<FPSUpdateTimer>, timer: ResMut<FPSUpdateTimer>,
q_camera: Query<&LinearVelocity, With<actor::PlayerCamera>>, q_camera: Query<&LinearVelocity, With<actor::PlayerCamera>>,
q_player: Query<&actor::ExperiencesGForce, With<actor::Player>>,
q_target: Query<&LinearVelocity, With<IsTargeted>>, q_target: Query<&LinearVelocity, With<IsTargeted>>,
mut q_speedometer: Query<&mut Style, (With<Speedometer>, Without<Speedometer2>)>, mut q_speedometer: Query<&mut Style, (With<Speedometer>, Without<Speedometer2>)>,
mut q_speedometer2: Query<&mut Style, (With<Speedometer2>, Without<Speedometer>)>, mut q_speedometer2: Query<&mut Style, (With<Speedometer2>, Without<Speedometer>)>,
@ -647,7 +649,19 @@ fn update_speedometer(
speedometer2.width = Val::Vw(wid); speedometer2.width = Val::Vw(wid);
} }
if let Ok(mut speed_text) = q_node_speed.get_single_mut() { if let Ok(mut speed_text) = q_node_speed.get_single_mut() {
speed_text.sections[0].value = if let Ok(target_v) = q_target.get_single() { // G forces
speed_text.sections[0].value = if let Ok(gforce) = q_player.get_single() {
if gforce.gforce > 0.0001 {
format!("{:.1}g\n", gforce.gforce)
} else {
"".to_string()
}
} else {
"".to_string()
};
// Velocity relative to target
speed_text.sections[1].value = if let Ok(target_v) = q_target.get_single() {
let delta_v = (target_v.0 - cam_v.0).length(); let delta_v = (target_v.0 - cam_v.0).length();
if delta_v > 0.0001 { if delta_v > 0.0001 {
format!("Δv {}\n", nature::readable_speed(delta_v)) format!("Δv {}\n", nature::readable_speed(delta_v))
@ -657,7 +671,9 @@ fn update_speedometer(
} else { } else {
"".to_string() "".to_string()
}; };
speed_text.sections[1].value = if speed > 0.0001 {
// "Absolute velocity", or velocity relative to orbit
speed_text.sections[2].value = if speed > 0.0001 {
nature::readable_speed(speed) nature::readable_speed(speed)
} else { } else {
"".to_string() "".to_string()
@ -700,7 +716,6 @@ fn update_hud(
diagnostics: Res<DiagnosticsStore>, diagnostics: Res<DiagnosticsStore>,
time: Res<Time>, time: Res<Time>,
mut log: ResMut<Log>, mut log: ResMut<Log>,
player: Query<(&actor::HitPoints, &actor::Suit, &actor::ExperiencesGForce), With<actor::Player>>,
q_camera: Query<(&Position, &LinearVelocity), With<actor::PlayerCamera>>, q_camera: Query<(&Position, &LinearVelocity), With<actor::PlayerCamera>>,
mut timer: ResMut<FPSUpdateTimer>, mut timer: ResMut<FPSUpdateTimer>,
q_choices: Query<&chat::Choice>, q_choices: Query<&chat::Choice>,
@ -715,10 +730,8 @@ fn update_hud(
// TODO only when hud is actually on // TODO only when hud is actually on
if timer.0.tick(time.delta()).just_finished() || log.needs_rerendering { if timer.0.tick(time.delta()).just_finished() || log.needs_rerendering {
let q_camera_result = q_camera.get_single(); let q_camera_result = q_camera.get_single();
let player = player.get_single();
let mut freshest_line: f64 = 0.0; let mut freshest_line: f64 = 0.0;
if player.is_ok() && q_camera_result.is_ok() { if q_camera_result.is_ok() {
let (_, _, gforce) = player.unwrap();
let (pos, _) = q_camera_result.unwrap(); let (pos, _) = q_camera_result.unwrap();
for mut text in &mut q_node_hud { for mut text in &mut q_node_hud {
text.sections[0].value = format!("2524-03-12 03:02"); text.sections[0].value = format!("2524-03-12 03:02");
@ -761,18 +774,6 @@ fn update_hud(
} }
} }
// let dev_speed = if settings.dev_mode {
// let x = pos.x;
// let y = pos.y;
// let z = pos.z;
// format!("\n{x:.0}\n{y:.0}\n{z:.0}")
// } else {
// "".to_string()
// };
let dev_speed = "";
let gforce = gforce.gforce;
text.sections[3].value = format!("\n{gforce:.1}g{dev_speed}");
if target_multiple { if target_multiple {
text.sections[4].value = "\n\nERROR: MULTIPLE TARGETS".to_string(); text.sections[4].value = "\n\nERROR: MULTIPLE TARGETS".to_string();
} }