use std::{collections::BTreeMap, path::PathBuf}; use bevy::{ecs::world::CommandQueue, prelude::*, tasks::Task}; use multi_key_map::MultiKeyMap; use occule::Codec; use crate::payload::DirworldEntityPayload; /// Root directory of the world #[derive(Resource, Deref, DerefMut, Default)] pub struct DirworldRootDir(pub Option); /// Current directory of the world #[derive(Resource, Default)] pub struct DirworldCurrentDir { /// Path of current directory pub path: PathBuf, /// Payload (contents of .door file) in current directory, if present pub payload: Option, } #[derive(Resource, Deref, DerefMut, Default, Debug)] pub struct DirworldLastDir(pub PathBuf); /// Running background tasks #[derive(Default, Resource, Deref, DerefMut)] pub struct DirworldTasks(pub BTreeMap>>>); /// A map between file types and their corresponding preload/spawn callback observers #[derive(Debug, Default, Resource, Deref, DerefMut)] pub struct DirworldObservers(pub MultiKeyMap); /// A map between file extensions and their corresponding [`Codec`]s #[derive(Default, Resource, Deref, DerefMut)] pub struct DirworldCodecs(pub MultiKeyMap>); /// Type of a filesystem entry #[derive(Debug, PartialEq, Eq, Hash)] pub enum EntryType { /// A file with an optional extension File(Option), /// A folder Folder, }