Loading seems to work

main
Elijah Voigt 5 days ago
parent e07ff07e23
commit b122c5cf0f

3
Cargo.lock generated

@ -2910,6 +2910,9 @@ checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df"
[[package]] [[package]]
name = "hum" name = "hum"
version = "0.1.0" version = "0.1.0"
dependencies = [
"engine",
]
[[package]] [[package]]
name = "iana-time-zone" name = "iana-time-zone"

@ -3,4 +3,5 @@ name = "hum"
version = "0.1.0" version = "0.1.0"
edition = "2024" edition = "2024"
[dependencies] [dependencies.engine]
path = "../engine"

@ -12,7 +12,7 @@ impl Plugin for BlocksPlugin {
fn build(&self, app: &mut App) { fn build(&self, app: &mut App) {
app.init_asset::<ShapeAsset>() app.init_asset::<ShapeAsset>()
.init_asset_loader::<ShapeAssetLoader>() .init_asset_loader::<ShapeAssetLoader>()
.add_systems(OnEnter(LoadState::Loading), load_assets) .add_systems(OnEnter(Loading::Active), load_assets.run_if(run_once))
.add_systems(OnEnter(GameState::Setup), (setup_camera, setup_blocks)) .add_systems(OnEnter(GameState::Setup), (setup_camera, setup_blocks))
.add_observer(add_shape); .add_observer(add_shape);
} }

@ -13,28 +13,30 @@ use fighter::*;
fn main() { fn main() {
App::new() App::new()
.add_plugins((DefaultPlugins, BlocksPlugin, FighterPlugin)) .add_plugins((DefaultPlugins, BlocksPlugin, FighterPlugin))
.init_state::<Loading>()
.init_state::<Debugger>()
.init_state::<GameState>() .init_state::<GameState>()
.init_resource::<AllAssets>() .init_resource::<AllAssets>()
.add_systems(Update, load.run_if(in_state(LoadState::Loading))) .add_systems(Update, load)
.run(); .run();
} }
#[derive(Default, Resource)] #[derive(Default, Resource, Debug)]
struct AllAssets { struct AllAssets {
handles: Vec<UntypedHandle>, handles: Vec<UntypedHandle>,
} }
/// Reports if the game is loading assets /// Reports if the game is loading assets
#[derive(States, Default, Clone, Eq, Debug, PartialEq, Hash)] #[derive(States, Default, Clone, Eq, Debug, PartialEq, Hash)]
enum LoadState { enum Loading {
#[default] #[default]
Loading, Active,
Loaded, Idle,
} }
/// Tracks if the game is in debug mode /// Tracks if the game is in debug mode
#[derive(States, Default, Clone, Eq, Debug, PartialEq, Hash)] #[derive(States, Default, Clone, Eq, Debug, PartialEq, Hash)]
enum DebugState { enum Debugger {
#[default] #[default]
Off, Off,
On, On,
@ -48,12 +50,10 @@ enum GameState {
Run, Run,
} }
fn load(mut next: ResMut<NextState<GameState>>, server: Res<AssetServer>, assets: Res<AllAssets>) { fn load(mut next: ResMut<NextState<Loading>>, server: Res<AssetServer>, assets: Res<AllAssets>) {
for asset in assets.handles.iter() { if assets.handles.iter().all(|h| matches!(server.get_load_state(h.id()), Some(LoadState::Loaded))) {
let state = server.get_load_state(asset.id()); next.set(Loading::Idle);
println!("{:?}", state);
} }
next.set(GameState::Setup);
} }
/// A wrapper around a handle for assigning an arbitrary Handle<T> to an entity /// A wrapper around a handle for assigning an arbitrary Handle<T> to an entity

Loading…
Cancel
Save