From 58501cf536a5b343ba7f86f571fe89b1b100ffe7 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Sun, 5 Jan 2025 15:31:14 +0200 Subject: [PATCH] feat(floor): move floors on "E" --- src/maze/mod.rs | 2 +- src/maze/triggers/spawn.rs | 2 +- src/player/components.rs | 9 +-------- src/player/systems/vertical_transition.rs | 24 ++++++++--------------- 4 files changed, 11 insertions(+), 26 deletions(-) diff --git a/src/maze/mod.rs b/src/maze/mod.rs index 2e2a644..b2a30e2 100644 --- a/src/maze/mod.rs +++ b/src/maze/mod.rs @@ -4,7 +4,7 @@ pub mod errors; pub mod events; pub mod resources; mod systems; -mod triggers; +pub mod triggers; use bevy::{ecs::system::RunSystemOnce, prelude::*}; use components::HexMaze; diff --git a/src/maze/triggers/spawn.rs b/src/maze/triggers/spawn.rs index 6582a21..b9b930f 100644 --- a/src/maze/triggers/spawn.rs +++ b/src/maze/triggers/spawn.rs @@ -16,7 +16,7 @@ use hexlab::prelude::{Tile as HexTile, *}; use hexx::HexOrientation; use std::f32::consts::{FRAC_PI_2, FRAC_PI_3, FRAC_PI_6}; -pub(super) fn spawn_maze( +pub(crate) fn spawn_maze( trigger: Trigger, mut commands: Commands, mut meshes: ResMut>, diff --git a/src/player/components.rs b/src/player/components.rs index a664363..26f8a8b 100644 --- a/src/player/components.rs +++ b/src/player/components.rs @@ -3,7 +3,7 @@ use hexx::Hex; #[derive(Debug, Reflect, Component)] #[reflect(Component)] -#[require(CurrentPosition, MovementSpeed, MovementTarget, TranstitionState)] +#[require(CurrentPosition, MovementSpeed, MovementTarget)] pub struct Player; #[derive(Debug, Reflect, Component, Deref, DerefMut, Default)] @@ -14,13 +14,6 @@ pub struct CurrentPosition(pub Hex); #[reflect(Component)] pub struct MovementSpeed(pub f32); -#[derive(Debug, Reflect, Component, Default)] -#[reflect(Component)] -pub struct TranstitionState { - pub just_transitioned: bool, - pub last_position: Hex, -} - impl Default for MovementSpeed { fn default() -> Self { Self(100.) diff --git a/src/player/systems/vertical_transition.rs b/src/player/systems/vertical_transition.rs index 15937ef..1e98466 100644 --- a/src/player/systems/vertical_transition.rs +++ b/src/player/systems/vertical_transition.rs @@ -6,43 +6,35 @@ use crate::{ events::TransitionFloor, }, maze::components::MazeConfig, - player::components::{CurrentPosition, Player, TranstitionState}, + player::components::{CurrentPosition, Player}, }; pub fn handle_floor_transition( - mut player_query: Query<(&CurrentPosition, &mut TranstitionState), With>, + mut player_query: Query<&CurrentPosition, With>, maze_query: Query<(&MazeConfig, &Floor), With>, mut event_writer: EventWriter, + input: Res>, ) { + if !input.just_pressed(KeyCode::KeyE) { + return; + } + let Ok((config, floor)) = maze_query.get_single() else { warn!("Failed to get maze configuration for current floor - cannot ascend/descend player."); return; }; - for (current_hex, mut transition_state) in player_query.iter_mut() { - // Reset transition state if moved to a new position - if current_hex.0 != transition_state.last_position { - transition_state.just_transitioned = false; - } - transition_state.last_position = current_hex.0; - - // Skip if transition just happened - if transition_state.just_transitioned { - continue; - } - + for current_hex in player_query.iter_mut() { // Check for ascending if current_hex.0 == config.end_pos { info!("Ascending"); event_writer.send(TransitionFloor::Ascend); - transition_state.just_transitioned = true; } // Check for descending if current_hex.0 == config.start_pos && floor.0 != 1 { info!("Descending"); event_writer.send(TransitionFloor::Descend); - transition_state.just_transitioned = true; } } }