From f08bd72038659dad34dbecc86151fcda7f7eb034 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Sat, 18 Jan 2025 16:58:43 +0200 Subject: [PATCH] feat(floors): hide floors above #18 --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/floor/components.rs | 2 +- src/floor/systems/hide.rs | 19 +++++++++++++++++++ src/floor/systems/mod.rs | 3 +++ src/floor/systems/movement.rs | 2 +- 6 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 src/floor/systems/hide.rs diff --git a/Cargo.lock b/Cargo.lock index 0e769ef..fa04fdd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3157,7 +3157,7 @@ dependencies = [ [[package]] name = "maze-ascension" -version = "1.1.1" +version = "1.1.2" dependencies = [ "anyhow", "bevy", diff --git a/Cargo.toml b/Cargo.toml index 196dd9d..bda2ab5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "maze-ascension" authors = ["Kristofers Solo "] -version = "1.1.1" +version = "1.1.2" edition = "2021" [dependencies] diff --git a/src/floor/components.rs b/src/floor/components.rs index 7056d24..75af5de 100644 --- a/src/floor/components.rs +++ b/src/floor/components.rs @@ -1,6 +1,6 @@ use bevy::prelude::*; -#[derive(Debug, Reflect, Component, Deref, DerefMut)] +#[derive(Debug, Reflect, Component, Deref, DerefMut, PartialEq, Eq, PartialOrd, Ord)] #[reflect(Component)] pub struct Floor(pub u8); diff --git a/src/floor/systems/hide.rs b/src/floor/systems/hide.rs new file mode 100644 index 0000000..5c07151 --- /dev/null +++ b/src/floor/systems/hide.rs @@ -0,0 +1,19 @@ +use bevy::prelude::*; + +use crate::floor::components::{CurrentFloor, Floor}; + +pub fn hide_upper_floors( + mut query: Query<(&mut Visibility, &Floor)>, + current_query: Query<&Floor, With>, +) { + let Ok(current_floor) = current_query.get_single() else { + return; + }; + for (mut visibility, floor) in query.iter_mut() { + if floor > current_floor { + *visibility = Visibility::Hidden + } else { + *visibility = Visibility::Visible + } + } +} diff --git a/src/floor/systems/mod.rs b/src/floor/systems/mod.rs index 5243719..1900366 100644 --- a/src/floor/systems/mod.rs +++ b/src/floor/systems/mod.rs @@ -1,10 +1,12 @@ mod despawn; +mod hide; mod movement; mod spawn; use crate::screens::Screen; use bevy::prelude::*; use despawn::despawn_floor; +use hide::hide_upper_floors; use movement::{handle_floor_transition_events, move_floors}; use spawn::spawn_floor; @@ -16,6 +18,7 @@ pub(super) fn plugin(app: &mut App) { despawn_floor, handle_floor_transition_events, move_floors, + hide_upper_floors, ) .chain() .run_if(in_state(Screen::Gameplay)), diff --git a/src/floor/systems/movement.rs b/src/floor/systems/movement.rs index fccabac..276781f 100644 --- a/src/floor/systems/movement.rs +++ b/src/floor/systems/movement.rs @@ -74,7 +74,7 @@ pub fn handle_floor_transition_events( } for event in event_reader.read() { - let Some((current_entity, current_floor)) = current_query.get_single().ok() else { + let Ok((current_entity, current_floor)) = current_query.get_single() else { continue; };