use ggez::{Context, audio}; use ggez::audio::SoundSource; use specs::{World, WorldExt}; use std::collections::HashMap; #[derive(Default)] pub struct AudioStore { pub sounds: HashMap, } impl AudioStore { pub fn play_sound(&mut self, sound: &String) { let _ = self .sounds .get_mut(sound) .expect("expected sound") .play_detached(); } } pub fn initialize_sounds(world: &mut World, context: &mut Context) { let mut audio_store = world.write_resource::(); let sounds = ["correct", "incorrect", "wall"]; for sound in sounds.iter() { let sound_name = sound.to_string(); let sound_path = format!("/sounds/{}.wav", sound_name); let sound_source = audio::Source::new(context, sound_path).expect("expected sound loaded"); audio_store.sounds.insert(sound_name, sound_source); } }