use bevy::{ app::{Plugin, PostUpdate}, ecs::schedule::IntoScheduleConfigs, state::{ condition::in_state, state::{OnEnter, OnExit}, }, }; use crate::state::AppState; pub mod home; pub mod monitoring; pub struct HomeViewPlugin; impl Plugin for HomeViewPlugin { fn build(&self, app: &mut bevy::app::App) { app.add_systems(OnEnter(AppState::Home), home::setup_home_view) .add_systems(OnExit(AppState::Home), home::cleanup_home_view) .add_systems( PostUpdate, ( home::search_timer, home::home_message_handler, home::home_view, ) .chain() .run_if(in_state(AppState::Home)), ); } } pub struct MonitoringViewPlugin; impl Plugin for MonitoringViewPlugin { fn build(&self, app: &mut bevy::app::App) { app.add_systems(OnEnter(AppState::Monitoring), monitoring::enter_monitoring) .add_systems(OnExit(AppState::Monitoring), monitoring::exit_monitoring) .add_systems( PostUpdate, ( monitoring::monitoring_message_handler, ( monitoring::update_device_data, monitoring::clear_device_data, ), monitoring::monitoring_view, ) .chain() .run_if(in_state(AppState::Monitoring)), ); } }