bevy_basic_ui/
lib.rs

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