bevy-playground/src/main.rs
2024-07-29 16:29:39 -05:00

89 lines
2.6 KiB
Rust

use bevy::audio::{AudioPlugin, SpatialScale};
use bevy::prelude::{default, *};
mod assets;
mod camera;
mod main_menu;
mod movement;
mod player;
mod statue;
#[derive(States, Default, Debug, Clone, PartialEq, Eq, Hash)]
pub enum Game {
#[default]
Running,
Paused,
}
#[derive(States, Default, Debug, Clone, PartialEq, Eq, Hash)]
pub enum View {
// #[default]
// LoadingScreen,
#[default]
MainMenu,
InGame,
}
#[derive(SystemSet, Debug, Clone, PartialEq, Eq, Hash)]
struct MainMenuSet;
#[derive(SystemSet, Debug, Clone, PartialEq, Eq, Hash)]
struct InGameSet;
fn main() {
let mut app = App::new();
app.init_resource::<assets::AssetLoader>();
app.insert_state(View::default());
app.insert_state(Game::default());
app.add_plugins((DefaultPlugins
.set(WindowPlugin {
primary_window: Some(Window {
title: "Kodo Tag".into(),
mode: bevy::window::WindowMode::BorderlessFullscreen,
// resolution: (640. * 2., 360. * 2.).into(),
..default()
}),
..default()
})
.set(AudioPlugin {
default_spatial_scale: SpatialScale::new_2d(1.),
global_volume: GlobalVolume::new(1.),
..default()
})
.set(ImagePlugin::default_nearest()),))
.add_systems(OnEnter(View::MainMenu), main_menu::startup)
.add_systems(OnExit(View::MainMenu), main_menu::exit)
.add_systems(OnEnter(View::InGame), (player::startup, statue::startup))
.add_systems(OnExit(View::InGame), (player::exit, statue::exit))
.add_systems(Startup, (assets::startup, camera::startup))
.add_systems(
Update,
(
(
player::sprite_select,
player::controls,
movement::update_velocity_by_heading,
movement::resolve_velocity.after(movement::update_velocity_by_heading),
movement::ysort.after(movement::update_velocity_by_heading),
camera::update
.after(player::controls)
.after(movement::resolve_velocity),
)
.in_set(InGameSet)
.run_if(in_state(View::InGame)),
(main_menu::update)
.in_set(MainMenuSet)
.run_if(in_state(View::MainMenu)),
),
)
.insert_resource(ClearColor(Color::rgb(0.1, 0.1, 0.1)))
.insert_resource(AmbientLight {
color: Color::rgb(1., 1., 1.),
brightness: 1.,
});
app.run()
}