You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.2 KiB
Rust
55 lines
1.2 KiB
Rust
mod audio;
|
|
mod debug;
|
|
mod display2d;
|
|
mod display3d;
|
|
mod game;
|
|
mod prelude;
|
|
|
|
use crate::prelude::*;
|
|
|
|
fn main() {
|
|
App::new()
|
|
.add_state::<GameState>()
|
|
.add_systems(Update, state)
|
|
.add_systems(Update, loading.run_if(in_state(GameState::Loading)))
|
|
.add_plugins((
|
|
DefaultPlugins.set(ImagePlugin::default_nearest()),
|
|
audio::AudioPlugin,
|
|
debug::DebugPlugin,
|
|
display2d::Display2dPlugin,
|
|
display3d::Display3dPlugin,
|
|
game::GamePlugin,
|
|
))
|
|
.run();
|
|
}
|
|
|
|
#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default, States)]
|
|
pub enum GameState {
|
|
#[default]
|
|
Loading,
|
|
Menu,
|
|
Display2d,
|
|
Display3d,
|
|
}
|
|
|
|
fn loading(
|
|
server: Res<AssetServer>,
|
|
sprites: Res<Assets<Image>>,
|
|
mut next_state: ResMut<NextState<GameState>>,
|
|
) {
|
|
let items = { sprites.ids() };
|
|
let states = server.get_group_load_state(items);
|
|
match states {
|
|
LoadState::Loaded | LoadState::NotLoaded => next_state.set(GameState::Display2d),
|
|
_ => (),
|
|
}
|
|
}
|
|
|
|
fn state(state: Option<Res<State<GameState>>>) {
|
|
state.map(|s| {
|
|
if s.is_added() || s.is_changed() {
|
|
info!("Updated state is {:?}", s);
|
|
}
|
|
});
|
|
}
|