feat(pause): hide walls and player when paused

This commit is contained in:
Kristofers Solo 2025-01-18 16:33:52 +02:00
parent 5d50daf768
commit 7a4bcd81f9
4 changed files with 36 additions and 1 deletions

View File

@ -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::<Screen>));
}

View File

@ -0,0 +1,13 @@
use bevy::prelude::*;
use crate::{maze::components::Wall, screens::Screen};
pub fn toggle_walls(mut query: Query<&mut Visibility, With<Wall>>, state: Res<State<Screen>>) {
for mut visibility in query.iter_mut() {
*visibility = match *state.get() {
Screen::Gameplay => Visibility::Visible,
Screen::Pause => Visibility::Hidden,
_ => *visibility,
}
}
}

View File

@ -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::<Screen>));
}

View File

@ -0,0 +1,13 @@
use bevy::prelude::*;
use crate::{player::components::Player, screens::Screen};
pub fn toggle_player(mut query: Query<&mut Visibility, With<Player>>, state: Res<State<Screen>>) {
for mut visibility in query.iter_mut() {
*visibility = match *state.get() {
Screen::Gameplay => Visibility::Visible,
Screen::Pause => Visibility::Hidden,
_ => *visibility,
}
}
}