diff --git a/src/floor/components.rs b/src/floor/components.rs index 9a8e924..570d919 100644 --- a/src/floor/components.rs +++ b/src/floor/components.rs @@ -12,6 +12,13 @@ pub struct CurrentFloor; #[reflect(Component)] pub struct NextFloor; +#[derive(Debug, Reflect, Component)] +#[reflect(Component)] +pub struct MovementState { + pub target_y: f32, + pub direction: f32, +} + impl Default for Floor { fn default() -> Self { Self(1) diff --git a/src/floor/systems/movement.rs b/src/floor/systems/movement.rs index 6a1e9e0..7b7d113 100644 --- a/src/floor/systems/movement.rs +++ b/src/floor/systems/movement.rs @@ -1,6 +1,6 @@ use crate::{ floor::{ - components::{CurrentFloor, NextFloor}, + components::{CurrentFloor, MovementState, NextFloor}, events::TransitionFloor, }, maze::{components::Maze, GlobalMazeConfig}, @@ -8,45 +8,77 @@ use crate::{ }; use bevy::prelude::*; +const MOVEMENT_THRESHOLD: f32 = 0.001; + pub(super) fn floor_movement( mut commands: Commands, - mut maze_query: Query<(Entity, &mut Transform), With>, + mut maze_query: Query<(Entity, &mut Transform, Option<&mut MovementState>), With>, current_query: Query>, next_query: Query>, player_query: Query<&MovementSpeed, With>, time: Res