From 69205318dda531490e5a35a03dd05913dd16cc1d Mon Sep 17 00:00:00 2001 From: Elijah Voigt Date: Tue, 21 Nov 2023 12:31:24 -0800 Subject: [PATCH] Move loading system to loading.rs --- .gitattributes | 1 + assets/Liquid Mirror Intro.mp4 | 3 +++ shell.nix | 1 + src/loading.rs | 46 ++++++++++++++++++++++++++++++++++ src/main.rs | 46 ---------------------------------- 5 files changed, 51 insertions(+), 46 deletions(-) create mode 100644 assets/Liquid Mirror Intro.mp4 diff --git a/.gitattributes b/.gitattributes index 584647e..24ff661 100644 --- a/.gitattributes +++ b/.gitattributes @@ -17,3 +17,4 @@ assets/ filter=lfs diff=lfs merge=lfs -text *.dll filter=lfs diff=lfs merge=lfs -text *.lib filter=lfs diff=lfs merge=lfs -text *.gltf filter=lfs diff=lfs merge=lfs -text +*.mp4 filter=lfs diff=lfs merge=lfs -text diff --git a/assets/Liquid Mirror Intro.mp4 b/assets/Liquid Mirror Intro.mp4 new file mode 100644 index 0000000..d21dae8 --- /dev/null +++ b/assets/Liquid Mirror Intro.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b92c92262f1d04081c632cb49a3074720cf114a4de388f35de50e09463174cb +size 1629149 diff --git a/shell.nix b/shell.nix index 677059e..c3df45b 100644 --- a/shell.nix +++ b/shell.nix @@ -19,6 +19,7 @@ mkShell rec { xorg.libXcursor xorg.libXi xorg.libXrandr # To use the x11 feature libxkbcommon wayland # To use the wayland feature gimp + ffmpeg ]; LD_LIBRARY_PATH = lib.makeLibraryPath buildInputs; diff --git a/src/loading.rs b/src/loading.rs index df1b205..10d9eb4 100644 --- a/src/loading.rs +++ b/src/loading.rs @@ -5,6 +5,7 @@ pub(crate) struct LoadingPlugin; impl Plugin for LoadingPlugin { fn build(&self, app: &mut App) { app.add_systems(Startup, initialize) + .add_systems(Update, loading.run_if(in_state(GameState::Loading))) .add_systems(OnEnter(GameState::Loading), activate::) .add_systems(OnExit(GameState::Loading), deactivate::); } @@ -48,3 +49,48 @@ fn initialize(mut commands: Commands) { },)); }); } + +fn loading( + server: Res, + sprites: Res>, + gltfs: Res>, + tweakfile: Res>, + mut next_state: ResMut>, +) { + let s_ids = sprites + .ids() + .filter(|&id| matches!(id, HandleId::AssetPathId(_))) + .collect::>(); + + let g_ids = gltfs + .ids() + .filter(|&id| matches!(id, HandleId::AssetPathId(_))) + .collect::>(); + + let a_ids = tweakfile + .ids() + .filter(|&id| matches!(id, HandleId::AssetPathId(_))) + .collect::>(); + + debug!( + "Sprite len: {:?} | GLTF len: {:?} | Audio Tweakfile: {:?}", + s_ids.len(), + g_ids.len(), + a_ids.len(), + ); + + if s_ids.len() > 0 && g_ids.len() > 0 { + let s_ready = s_ids + .iter() + .all(|&id| server.get_load_state(id) == LoadState::Loaded); + let g_ready = g_ids + .iter() + .all(|&id| server.get_load_state(id) == LoadState::Loaded); + let a_ready = a_ids + .iter() + .all(|&id| server.get_load_state(id) == LoadState::Loaded); + if s_ready && g_ready && a_ready { + next_state.set(GameState::Menu) + } + } +} diff --git a/src/main.rs b/src/main.rs index e8cb4a1..1cf1bc6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -37,7 +37,6 @@ fn main() { debug_state::.run_if(resource_changed::>()), ), ); - app.add_systems(Update, loading.run_if(in_state(GameState::Loading))); app.add_systems( Update, ( @@ -90,51 +89,6 @@ pub(crate) enum DisplayState { Display3d, } -fn loading( - server: Res, - sprites: Res>, - gltfs: Res>, - tweakfile: Res>, - mut next_state: ResMut>, -) { - let s_ids = sprites - .ids() - .filter(|&id| matches!(id, HandleId::AssetPathId(_))) - .collect::>(); - - let g_ids = gltfs - .ids() - .filter(|&id| matches!(id, HandleId::AssetPathId(_))) - .collect::>(); - - let a_ids = tweakfile - .ids() - .filter(|&id| matches!(id, HandleId::AssetPathId(_))) - .collect::>(); - - debug!( - "Sprite len: {:?} | GLTF len: {:?} | Audio Tweakfile: {:?}", - s_ids.len(), - g_ids.len(), - a_ids.len(), - ); - - if s_ids.len() > 0 && g_ids.len() > 0 { - let s_ready = s_ids - .iter() - .all(|&id| server.get_load_state(id) == LoadState::Loaded); - let g_ready = g_ids - .iter() - .all(|&id| server.get_load_state(id) == LoadState::Loaded); - let a_ready = a_ids - .iter() - .all(|&id| server.get_load_state(id) == LoadState::Loaded); - if s_ready && g_ready && a_ready { - next_state.set(GameState::Menu) - } - } -} - /// System for printing the current state /// /// Only runs when state is modified.