mod audio; mod player; mod camera; mod world; mod settings; use bevy::a11y::AccessibilityPlugin; use bevy::audio::AudioPlugin; use bevy::input::InputPlugin; use bevy::log::LogPlugin; use bevy::prelude::*; use bevy::render::RenderPlugin; use bevy::window::{Window, WindowMode, PrimaryWindow, CursorGrabMode}; use bevy::scene::ScenePlugin; use bevy::core_pipeline::CorePipelinePlugin; use bevy::pbr::PbrPlugin; use bevy::winit::WinitPlugin; fn main() { App::new() .add_systems(Startup, ( setup, settings::setup, audio::setup, player::setup, world::setup, )) .add_systems(Update, ( handle_input, player::handle_input, audio::toggle_bgm, world::asset_loaded.after(world::load_cubemap_asset), )) .add_plugins(( LogPlugin::default(), MinimalPlugins, TransformPlugin, InputPlugin, WindowPlugin::default(), AccessibilityPlugin, AssetPlugin::default(), ScenePlugin::default(), WinitPlugin::default(), RenderPlugin::default(), ImagePlugin::default_nearest(), CorePipelinePlugin::default(), PbrPlugin::default(), AudioPlugin::default(), )) .add_plugins(camera::CameraControllerPlugin) .run(); } fn setup( //mut commands: Commands, mut windows: Query<&mut Window, With> ) { for mut window in &mut windows { window.cursor.grab_mode = CursorGrabMode::Locked; window.cursor.visible = false; window.mode = WindowMode::Fullscreen; } } fn handle_input( keyboard_input: Res>, mut settings: Query<&mut settings::Settings>, mut app_exit_events: ResMut> ) { if keyboard_input.pressed(KeyCode::KeyQ) { app_exit_events.send(bevy::app::AppExit); } if keyboard_input.just_pressed(KeyCode::F12) { let result = settings.get_single_mut(); if result.is_ok() { result.unwrap().reset() } } }