1use bevy::{
2 app::{Plugin, PostUpdate},
3 ecs::schedule::IntoScheduleConfigs,
4 state::{
5 condition::in_state,
6 state::{OnEnter, OnExit},
7 },
8};
9
10use crate::state::AppState;
11
12pub mod home;
13pub mod monitoring;
14
15pub struct HomeViewPlugin;
16
17impl Plugin for HomeViewPlugin {
18 fn build(&self, app: &mut bevy::app::App) {
19 app.add_systems(OnEnter(AppState::Home), home::setup_home_view)
20 .add_systems(OnExit(AppState::Home), home::cleanup_home_view)
21 .add_systems(
22 PostUpdate,
23 (
24 home::search_timer,
25 home::home_message_handler,
26 home::home_view,
27 )
28 .chain()
29 .run_if(in_state(AppState::Home)),
30 );
31 }
32}
33
34pub struct MonitoringViewPlugin;
35
36impl Plugin for MonitoringViewPlugin {
37 fn build(&self, app: &mut bevy::app::App) {
38 app.add_systems(OnEnter(AppState::Monitoring), monitoring::enter_monitoring)
39 .add_systems(OnExit(AppState::Monitoring), monitoring::exit_monitoring)
40 .add_systems(
41 PostUpdate,
42 (
43 monitoring::monitoring_message_handler,
44 (
45 monitoring::update_device_data,
46 monitoring::clear_device_data,
47 ),
48 monitoring::monitoring_view,
49 )
50 .chain()
51 .run_if(in_state(AppState::Monitoring)),
52 );
53 }
54}