diff --git a/assets/sprites/dashboard_radioactivity.png b/assets/sprites/dashboard_radioactivity.png new file mode 100644 index 0000000..16aee74 Binary files /dev/null and b/assets/sprites/dashboard_radioactivity.png differ diff --git a/src/hud.rs b/src/hud.rs index 0cd7847..c2e3e65 100644 --- a/src/hud.rs +++ b/src/hud.rs @@ -94,6 +94,7 @@ enum Dashboard { Flashlight, RotationStabiliser, CruiseControl, + Radioactivity, } #[derive(Component, Debug, Copy, Clone)] @@ -494,6 +495,15 @@ pub fn setup( }, Dashboard::CruiseControl, )); + builder.spawn(( + ImageBundle { + image: UiImage::new(asset_server.load("sprites/dashboard_radioactivity.png")), + style: style_dashboard.clone(), + visibility: Visibility::Hidden, + ..Default::default() + }, + Dashboard::Radioactivity, + )); }); // Add Speedometer @@ -638,7 +648,8 @@ pub fn setup( fn update_dashboard( timer: ResMut, mut q_dashboard: Query<(&mut Visibility, &Dashboard)>, - q_player: Query<&actor::Suit, With>, + id2pos: Res, + q_player: Query<(&actor::Suit, &Position), With>, settings: Res, ) { if !settings.hud_active || !timer.0.just_finished() { @@ -646,7 +657,7 @@ fn update_dashboard( } let player = q_player.get_single(); if player.is_err() { return; } - let suit = player.unwrap(); + let (suit, pos) = player.unwrap(); for (mut vis, icon) in &mut q_dashboard { *vis = bool2vis(match icon { @@ -662,6 +673,13 @@ fn update_dashboard( Dashboard::CruiseControl => { settings.cruise_control_active } + Dashboard::Radioactivity => { + if let Some(pos_jupiter) = id2pos.0.get(cmd::ID_JUPITER) { + pos_jupiter.distance(pos.0) < 140_000_000.0 + } else { + false + } + } }); } } diff --git a/src/svg/dashboard_radioactivity.svg b/src/svg/dashboard_radioactivity.svg new file mode 100644 index 0000000..f43d51b --- /dev/null +++ b/src/svg/dashboard_radioactivity.svg @@ -0,0 +1,108 @@ + + + +