diff --git a/src/maze/systems/mod.rs b/src/maze/systems/mod.rs index 8def9f0..4630a54 100644 --- a/src/maze/systems/mod.rs +++ b/src/maze/systems/mod.rs @@ -2,7 +2,13 @@ pub mod common; pub mod despawn; pub mod respawn; pub mod spawn; +mod toogle_pause; use bevy::prelude::*; +use toogle_pause::toggle_walls; -pub(super) fn plugin(_app: &mut App) {} +use crate::screens::Screen; + +pub(super) fn plugin(app: &mut App) { + app.add_systems(Update, toggle_walls.run_if(state_changed::)); +} diff --git a/src/maze/systems/toogle_pause.rs b/src/maze/systems/toogle_pause.rs new file mode 100644 index 0000000..5bc69ab --- /dev/null +++ b/src/maze/systems/toogle_pause.rs @@ -0,0 +1,13 @@ +use bevy::prelude::*; + +use crate::{maze::components::Wall, screens::Screen}; + +pub fn toggle_walls(mut query: Query<&mut Visibility, With>, state: Res>) { + for mut visibility in query.iter_mut() { + *visibility = match *state.get() { + Screen::Gameplay => Visibility::Visible, + Screen::Pause => Visibility::Hidden, + _ => *visibility, + } + } +} diff --git a/src/player/systems/mod.rs b/src/player/systems/mod.rs index 4b15cc5..0dc993f 100644 --- a/src/player/systems/mod.rs +++ b/src/player/systems/mod.rs @@ -4,6 +4,7 @@ mod movement; pub mod respawn; mod sound_effect; pub mod spawn; +mod toogle_pause; mod vertical_transition; use crate::{screens::Screen, AppSet}; @@ -11,6 +12,7 @@ use bevy::prelude::*; use input::player_input; use movement::player_movement; use sound_effect::play_movement_sound; +use toogle_pause::toggle_player; use vertical_transition::handle_floor_transition; use super::assets::PlayerAssets; @@ -30,4 +32,5 @@ pub(super) fn plugin(app: &mut App) { .chain() .run_if(in_state(Screen::Gameplay)), ); + app.add_systems(Update, toggle_player.run_if(state_changed::)); } diff --git a/src/player/systems/toogle_pause.rs b/src/player/systems/toogle_pause.rs new file mode 100644 index 0000000..fcee999 --- /dev/null +++ b/src/player/systems/toogle_pause.rs @@ -0,0 +1,13 @@ +use bevy::prelude::*; + +use crate::{player::components::Player, screens::Screen}; + +pub fn toggle_player(mut query: Query<&mut Visibility, With>, state: Res>) { + for mut visibility in query.iter_mut() { + *visibility = match *state.get() { + Screen::Gameplay => Visibility::Visible, + Screen::Pause => Visibility::Hidden, + _ => *visibility, + } + } +}