#[allow(unused_imports)]
use crate::prelude::*;
use bevy::{platform::collections::HashMap, prelude::*};
#[derive(Component, Default, Reflect, Clone, Debug)]
#[reflect(Component, Default, Debug)]
pub struct TiledWorldStorage {
pub(crate) maps: HashMap<u32, Entity>,
}
impl TiledWorldStorage {
pub fn clear(&mut self, commands: &mut Commands) {
for (_, map_entity) in self.maps.iter() {
commands.entity(*map_entity).despawn();
}
self.maps.clear();
}
pub fn maps(&self) -> bevy::platform::collections::hash_map::Iter<'_, u32, Entity> {
self.maps.iter()
}
pub fn get_map_entity(&self, map_id: u32) -> Option<Entity> {
self.maps.get(&map_id).cloned()
}
pub fn get_map_id(&self, entity: Entity) -> Option<u32> {
self.maps
.iter()
.find(|(_, &e)| e == entity)
.map(|(&id, _)| id)
}
}
pub(crate) fn plugin(app: &mut App) {
app.register_type::<TiledWorldStorage>();
}