lib.rs (1378B)
1 mod actions; 2 mod audio; 3 mod loading; 4 mod menu; 5 mod player; 6 7 use crate::actions::ActionsPlugin; 8 use crate::audio::InternalAudioPlugin; 9 use crate::loading::LoadingPlugin; 10 use crate::menu::MenuPlugin; 11 use crate::player::PlayerPlugin; 12 13 use bevy::app::App; 14 #[cfg(debug_assertions)] 15 use bevy::diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin}; 16 use bevy::prelude::*; 17 18 // This example game uses States to separate logic 19 // See https://bevy-cheatbook.github.io/programming/states.html 20 // Or https://github.com/bevyengine/bevy/blob/main/examples/ecs/state.rs 21 #[derive(Clone, Eq, PartialEq, Debug, Hash)] 22 enum GameState { 23 // During the loading State the LoadingPlugin will load our assets 24 Loading, 25 // During this State the actual game logic is executed 26 Playing, 27 // Here the menu is drawn and waiting for player interaction 28 Menu, 29 } 30 31 pub struct GamePlugin; 32 33 impl Plugin for GamePlugin { 34 fn build(&self, app: &mut App) { 35 app.add_state(GameState::Loading) 36 .add_plugin(LoadingPlugin) 37 .add_plugin(MenuPlugin) 38 .add_plugin(ActionsPlugin) 39 .add_plugin(InternalAudioPlugin) 40 .add_plugin(PlayerPlugin); 41 42 #[cfg(debug_assertions)] 43 { 44 app.add_plugin(FrameTimeDiagnosticsPlugin::default()) 45 .add_plugin(LogDiagnosticsPlugin::default()); 46 } 47 } 48 }