State example (#13322)
# Objective adopted from #10716 adds example for updating state --------- Co-authored-by: Stepan Koltsov <stepan.koltsov@gmail.com> Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
This commit is contained in:
		
							parent
							
								
									bfc13383e0
								
							
						
					
					
						commit
						1a3549a916
					
				@ -6,6 +6,7 @@ mod states;
 | 
				
			|||||||
mod sub_states;
 | 
					mod sub_states;
 | 
				
			||||||
mod transitions;
 | 
					mod transitions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub use bevy_state_macros::*;
 | 
				
			||||||
pub use computed_states::*;
 | 
					pub use computed_states::*;
 | 
				
			||||||
pub use freely_mutable_state::*;
 | 
					pub use freely_mutable_state::*;
 | 
				
			||||||
pub use resources::*;
 | 
					pub use resources::*;
 | 
				
			||||||
@ -16,16 +17,13 @@ pub use transitions::*;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#[cfg(test)]
 | 
					#[cfg(test)]
 | 
				
			||||||
mod tests {
 | 
					mod tests {
 | 
				
			||||||
 | 
					    use bevy_ecs::event::EventRegistry;
 | 
				
			||||||
    use bevy_ecs::prelude::*;
 | 
					    use bevy_ecs::prelude::*;
 | 
				
			||||||
    use bevy_ecs::schedule::ScheduleLabel;
 | 
					    use bevy_ecs::schedule::ScheduleLabel;
 | 
				
			||||||
 | 
					    use bevy_state_macros::States;
 | 
				
			||||||
    use bevy_state_macros::SubStates;
 | 
					    use bevy_state_macros::SubStates;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    use super::*;
 | 
					    use super::*;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    use bevy_ecs::event::EventRegistry;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    use bevy_ecs::prelude::ResMut;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    use crate as bevy_state;
 | 
					    use crate as bevy_state;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #[derive(States, PartialEq, Eq, Debug, Default, Hash, Clone)]
 | 
					    #[derive(States, PartialEq, Eq, Debug, Default, Hash, Clone)]
 | 
				
			||||||
 | 
				
			|||||||
@ -22,6 +22,7 @@ use bevy_ecs::prelude::ReflectResource;
 | 
				
			|||||||
/// ```
 | 
					/// ```
 | 
				
			||||||
/// use bevy_state::prelude::*;
 | 
					/// use bevy_state::prelude::*;
 | 
				
			||||||
/// use bevy_ecs::prelude::*;
 | 
					/// use bevy_ecs::prelude::*;
 | 
				
			||||||
 | 
					/// use bevy_state_macros::States;
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
/// #[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default, States)]
 | 
					/// #[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default, States)]
 | 
				
			||||||
/// enum GameState {
 | 
					/// enum GameState {
 | 
				
			||||||
 | 
				
			|||||||
@ -2,8 +2,6 @@ use std::fmt::Debug;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use std::hash::Hash;
 | 
					use std::hash::Hash;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub use bevy_state_macros::States;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// Types that can define world-wide states in a finite-state machine.
 | 
					/// Types that can define world-wide states in a finite-state machine.
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
/// The [`Default`] trait defines the starting state.
 | 
					/// The [`Default`] trait defines the starting state.
 | 
				
			||||||
@ -22,7 +20,10 @@ pub use bevy_state_macros::States;
 | 
				
			|||||||
/// # Example
 | 
					/// # Example
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
/// ```
 | 
					/// ```
 | 
				
			||||||
/// use bevy_state::prelude::States;
 | 
					/// use bevy_state::prelude::*;
 | 
				
			||||||
 | 
					/// use bevy_ecs::prelude::IntoSystemConfigs;
 | 
				
			||||||
 | 
					/// use bevy_ecs::system::ResMut;
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
/// #[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default, States)]
 | 
					/// #[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default, States)]
 | 
				
			||||||
/// enum GameState {
 | 
					/// enum GameState {
 | 
				
			||||||
@ -32,6 +33,26 @@ pub use bevy_state_macros::States;
 | 
				
			|||||||
///   InGame,
 | 
					///   InGame,
 | 
				
			||||||
/// }
 | 
					/// }
 | 
				
			||||||
///
 | 
					///
 | 
				
			||||||
 | 
					/// fn handle_escape_pressed(mut next_state: ResMut<NextState<GameState>>) {
 | 
				
			||||||
 | 
					/// #   let escape_pressed = true;
 | 
				
			||||||
 | 
					///     if escape_pressed {
 | 
				
			||||||
 | 
					///         next_state.set(GameState::SettingsMenu);
 | 
				
			||||||
 | 
					///     }
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// fn open_settings_menu() {
 | 
				
			||||||
 | 
					///     // Show the settings menu...
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// # struct AppMock;
 | 
				
			||||||
 | 
					/// # impl AppMock {
 | 
				
			||||||
 | 
					/// #     fn add_systems<S, M>(&mut self, schedule: S, systems: impl IntoSystemConfigs<M>) {}
 | 
				
			||||||
 | 
					/// # }
 | 
				
			||||||
 | 
					/// # struct Update;
 | 
				
			||||||
 | 
					/// # let mut app = AppMock;
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// app.add_systems(Update, handle_escape_pressed.run_if(in_state(GameState::MainMenu)));
 | 
				
			||||||
 | 
					/// app.add_systems(OnEnter(GameState::SettingsMenu), open_settings_menu);
 | 
				
			||||||
/// ```
 | 
					/// ```
 | 
				
			||||||
pub trait States: 'static + Send + Sync + Clone + PartialEq + Eq + Hash + Debug {
 | 
					pub trait States: 'static + Send + Sync + Clone + PartialEq + Eq + Hash + Debug {
 | 
				
			||||||
    /// How many other states this state depends on.
 | 
					    /// How many other states this state depends on.
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user