use bevy::prelude::*; use bevy::utils::HashMap; use musicbox::prelude::AudioSource; use musicbox::utilities::SuppliesAudio; #[derive(Copy, Clone, Debug)] pub struct SpriteSheetConfig { pub tile_width: usize, pub tile_height: usize, pub columns: usize, pub rows: usize, } impl SpriteSheetConfig { pub fn squares(tile_wh: usize, columns: usize, rows: usize) -> Self { Self { tile_width: tile_wh, tile_height: tile_wh, columns, rows, } } pub fn rectangles(tile_width: usize, tile_height: usize, columns: usize, rows: usize) -> Self { Self { tile_width, tile_height, columns, rows, } } } #[derive(Default)] pub struct AssetHandles { pub images: HashMap<String, Handle<Image>>, pub atlas: HashMap<String, Handle<TextureAtlas>>, pub sounds: HashMap<String, Handle<AudioSource>>, } impl SuppliesAudio for AssetHandles { fn get_audio_track<T: ToString>(&self, name: T) -> Option<Handle<AudioSource>> { self.sounds.get(&name.to_string()).map(Handle::clone_weak) } } pub type AssetNameMapping = (String, String); pub type FixedAssetNameMapping = (&'static str, &'static str);