From a1e9304dc31980703446bdb33246e314bafd3b15 Mon Sep 17 00:00:00 2001 From: Silas Bartha Date: Tue, 24 Dec 2024 00:54:31 -0500 Subject: Switched to bevy_mod_scripting, bevy 0.15 update --- src/preload/systems.rs | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/preload/systems.rs (limited to 'src/preload/systems.rs') diff --git a/src/preload/systems.rs b/src/preload/systems.rs new file mode 100644 index 0000000..ec867ae --- /dev/null +++ b/src/preload/systems.rs @@ -0,0 +1,41 @@ +use bevy::prelude::*; + +use crate::{components::DirworldEntity, events::DirworldSpawn, resources::{DirworldObservers, EntryType}, Extensions}; + +use super::{PreloadState, RoomAssets}; + +pub fn handle_preload( + asset_server: Res, + room_assets: Res, + mut next_state: ResMut>, +) { + if room_assets.is_empty() + || room_assets + .values() + .flat_map(|v| v.values()) + .all(|a| asset_server.is_loaded_with_dependencies(a)) + { + info!("Preload Done."); + next_state.set(PreloadState::Done); + } +} + +pub fn handle_spawn( + dirworld_entity_query: Query<(Entity, &DirworldEntity)>, + mut commands: Commands, + observers: Res, +) { + info!("Spawning"); + for (entity, DirworldEntity { path, .. }) in dirworld_entity_query.iter() { + let entry_type = if path.is_dir() { + EntryType::Folder + } else { + EntryType::File(path.extensions()) + }; + if let Some(observer) = observers.get(&entry_type) { + info!("Found observer {observer:?} for {entry_type:?}"); + commands.trigger_targets(DirworldSpawn(entity), observer.clone()); + } + } +} + -- cgit v1.2.3