use std::collections::HashMap; use std::ops::{Deref, DerefMut}; use bevy::prelude::Resource; use serde_json::Value; use crate::LdtkLevel; #[derive(Resource, Default)] pub struct LevelIndex(pub HashMap<String, LdtkLevel>); impl Deref for LevelIndex { type Target = HashMap<String, LdtkLevel>; fn deref(&self) -> &Self::Target { &self.0 } } impl DerefMut for LevelIndex { fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } } #[derive(Default)] pub struct TileMetadata(pub HashMap<i64, Value>); #[derive(Resource, Default)] pub struct TilesetIndex(pub HashMap<String, TileMetadata>); impl Deref for TilesetIndex { type Target = HashMap<String, TileMetadata>; fn deref(&self) -> &Self::Target { &self.0 } } impl DerefMut for TilesetIndex { fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } }