bevy_codex/
lib.rs

1use bevy::prelude::*;
2use bevy_lunex::{UiGenericPlugin, UiPlugin};
3use components::Ui3d;
4use events::SelectEvent;
5use hud::HudPlugin;
6use loading::LoadingPlugin;
7use main_menu::MainMenuPlugin;
8use pause::PausePlugin;
9use prelude::*;
10use resources::CodexSettings;
11// use settings::SettingsUiPlugin;
12use splash::SplashPlugin;
13use systems::{exit, init_ui_cam};
14use widgets::WidgetPlugins;
15
16pub mod prelude {
17    use bevy::{prelude::Component, reflect::Reflect, state::state::States};
18
19    use crate::resources::CodexSettings;
20
21    #[derive(Default, States, Debug, Reflect, Hash, Eq, PartialEq, Clone)]
22    pub enum SimulationState {
23        #[default]
24        Running,
25        Paused,
26    }
27
28    #[derive(Default, States, Component, Reflect, Debug, Hash, Eq, PartialEq, Clone)]
29    pub enum UiState {
30        MainMenu,
31        Loading,
32        Settings,
33        Hud,
34        #[default]
35        Splash,
36        Debug,
37    }
38    #[derive(Clone, Default)]
39    pub struct UiScreensPlugin {
40        pub settings: CodexSettings,
41    }
42}
43
44pub mod components;
45pub mod events;
46pub mod hud;
47pub mod loading;
48pub mod main_menu;
49pub mod pause;
50pub mod resources;
51pub mod settings;
52pub mod splash;
53pub mod styles;
54pub mod systems;
55pub mod widgets;
56
57impl Plugin for UiScreensPlugin {
58    fn build(&self, app: &mut App) {
59        app.insert_resource::<CodexSettings>(self.settings.clone())
60            .add_event::<SelectEvent>()
61            .add_plugins((
62                MainMenuPlugin,
63                PausePlugin,
64                // SettingsUiPlugin,
65                SplashPlugin,
66                HudPlugin,
67                WidgetPlugins,
68                UiPlugin,
69                LoadingPlugin,
70                UiGenericPlugin::<Ui3d>::new(),
71            ))
72            .init_state::<SimulationState>()
73            .init_state::<UiState>()
74            .add_systems(Startup, init_ui_cam)
75            .add_systems(Update, exit);
76    }
77}