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/cache/mod.rs | 3 +++ src/cache/resources.rs | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 src/cache/mod.rs create mode 100644 src/cache/resources.rs (limited to 'src/cache') diff --git a/src/cache/mod.rs b/src/cache/mod.rs new file mode 100644 index 0000000..19c3a6f --- /dev/null +++ b/src/cache/mod.rs @@ -0,0 +1,3 @@ +mod resources; +pub use resources::DirworldCache; + diff --git a/src/cache/resources.rs b/src/cache/resources.rs new file mode 100644 index 0000000..6aba61a --- /dev/null +++ b/src/cache/resources.rs @@ -0,0 +1,22 @@ +use std::{collections::HashMap, path::PathBuf}; + +use bevy::prelude::*; + +use crate::{components::DirworldEntity, payload::DirworldEntityPayload}; + +/// Structure containing payload data for cached (non-current) rooms +#[derive(Resource, Default, Debug, Deref, DerefMut)] +pub struct DirworldCache(pub HashMap); + +impl DirworldCache { + /// Stores an entity's payload in the cache, if it exists + pub fn cache_entity(&mut self, dirworld_entity: &DirworldEntity) { + if let Some(payload) = &dirworld_entity.payload { + self.insert(dirworld_entity.path.clone(), payload.clone()); + } + } + + pub fn get_entity_cache(&mut self, path: impl Into) -> Option { + self.remove(&path.into()) + } +} -- cgit v1.2.3