use crate::MortarGameEvent;
use bevy::prelude::*;
#[derive(Resource, Clone, Copy)]
pub struct MortarAudioSettings {
pub auto_play_sound_events: bool,
pub playback_settings: PlaybackSettings,
}
impl Default for MortarAudioSettings {
fn default() -> Self {
Self {
auto_play_sound_events: true,
playback_settings: PlaybackSettings::DESPAWN,
}
}
}
pub(crate) fn auto_play_sound_events(
settings: Res<MortarAudioSettings>,
mut events: MessageReader<MortarGameEvent>,
asset_server: Res<AssetServer>,
mut commands: Commands,
) {
if !settings.auto_play_sound_events {
return;
}
for event in events.read() {
if event.name != "play_sound" {
continue;
}
if let Some(path) = event.args.first() {
let audio_handle = asset_server.load::<AudioSource>(path.clone());
commands.spawn((AudioPlayer::new(audio_handle), settings.playback_settings));
}
}
}