Loading seems to work

main
Elijah Voigt 4 days ago
parent e07ff07e23
commit b122c5cf0f

3
Cargo.lock generated

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

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

@ -12,7 +12,7 @@ impl Plugin for BlocksPlugin {
fn build(&self, app: &mut App) {
app.init_asset::<ShapeAsset>()
.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_observer(add_shape);
}

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

Loading…
Cancel
Save