From c9c45b25699cdd956e7be5d1cb2f87bd40bc5bb8 Mon Sep 17 00:00:00 2001 From: Nolan Darilek Date: Sun, 6 Oct 2024 10:42:25 -0500 Subject: [PATCH] Remove state configuration from plugins. --- src/core.rs | 1 + src/exploration.rs | 37 +++---------------------------------- src/navigation.rs | 33 +++++++++------------------------ 3 files changed, 13 insertions(+), 58 deletions(-) diff --git a/src/core.rs b/src/core.rs index 417c86a..80ad04d 100644 --- a/src/core.rs +++ b/src/core.rs @@ -691,6 +691,7 @@ impl PluginGroup for CorePlugins { PluginGroupBuilder::start::() .add(crate::bevy_tts::TtsPlugin) .add(crate::bevy_synthizer::SynthizerPlugin::default()) + .add(crate::navigation::NavigationPlugin::default()) .add(CorePlugin::default()) } } diff --git a/src/exploration.rs b/src/exploration.rs index b6f164b..1c41297 100644 --- a/src/exploration.rs +++ b/src/exploration.rs @@ -374,27 +374,8 @@ fn cancel_on_navigate( } } -fn cleanup( - mut commands: Commands, - explorers: Query>, - focus: Query>, -) { - for entity in &explorers { - commands.entity(entity).remove::(); - } - for entity in &focus { - commands.entity(entity).remove::(); - } -} - -#[derive(Resource, Clone, Debug, Default)] -struct ExplorationConfig { - states: Vec, -} - #[derive(Resource, Clone, Default)] -pub struct ExplorationPlugin { - pub states: Vec, +pub struct ExplorationPlugin { pub exploration_type: PhantomData, pub map_data: PhantomData, } @@ -402,18 +383,13 @@ pub struct ExplorationPlugin { #[derive(Debug, Hash, PartialEq, Eq, Clone, SystemSet)] pub struct Exploration; -impl Plugin for ExplorationPlugin +impl Plugin for ExplorationPlugin where ExplorationType: 'static + Component + Default + Copy + Ord + PartialEq + Into, - State: States, MapData: 'static + Clone + Default + Send + Sync, { fn build(&self, app: &mut App) { - let config = ExplorationConfig { - states: self.states.clone(), - }; - app.insert_resource(config.clone()) - .register_type::() + app.register_type::() .register_type::() .register_type::() .add_plugins(InputManagerPlugin::::default()) @@ -441,12 +417,5 @@ where FixedUpdate, (navigate_to_explored::, cancel_on_navigate).in_set(Exploration), ); - if !config.states.is_empty() { - let states = config.states; - for state in states { - app.configure_sets(FixedUpdate, Exploration.run_if(in_state(state.clone()))) - .add_systems(OnExit(state), cleanup); - } - } } } diff --git a/src/navigation.rs b/src/navigation.rs index 05ca405..7f3c451 100644 --- a/src/navigation.rs +++ b/src/navigation.rs @@ -311,15 +311,13 @@ fn add_speed(mut commands: Commands, query: Query, Without } } -fn log_area_descriptions( +fn log_area_descriptions( mut events: EventReader, areas: Query<(&Area, Option<&Name>)>, players: Query<&Player>, - config: Res>, + config: Res, mut log: Query<&mut Log>, -) where - State: 'static + Send + Sync, -{ +) { if !config.log_area_descriptions { return; } @@ -358,29 +356,24 @@ fn log_area_descriptions( pub struct Movement; #[derive(Resource, Clone, Debug)] -pub struct NavigationPlugin { - pub states: Vec, +pub struct NavigationPlugin { pub describe_undescribed_areas: bool, pub log_area_descriptions: bool, } -impl Default for NavigationPlugin { +impl Default for NavigationPlugin { fn default() -> Self { Self { - states: vec![], describe_undescribed_areas: false, log_area_descriptions: true, } } } -impl Plugin for NavigationPlugin -where - State: States, -{ +impl Plugin for NavigationPlugin { fn build(&self, app: &mut App) { - app.insert_resource(self.clone()); - app.init_resource::() + app.insert_resource(self.clone()) + .init_resource::() .register_type::() .register_type::() .register_type::() @@ -398,14 +391,6 @@ where FixedUpdate, (tick_snap_timers, speak_direction.pipe(error_handler)), ) - .add_systems( - PostUpdate, - (remove_direction, log_area_descriptions::), - ); - if !self.states.is_empty() { - for state in &self.states { - app.configure_sets(Update, Movement.run_if(in_state(state.clone()))); - } - } + .add_systems(PostUpdate, (remove_direction, log_area_descriptions)); } }