Skip to content
Snippets Groups Projects
resources.rs 1.11 KiB
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(crate) images: HashMap<String, Handle<Image>>,
	pub(crate) atlas: HashMap<String, Handle<TextureAtlas>>,
	pub(crate) 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);