game is now independent of hexodsp/cpal
This commit is contained in:
parent
ccf86e23e4
commit
450e448649
18 changed files with 85 additions and 230 deletions
49
src/audio_system.rs
Normal file
49
src/audio_system.rs
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
use bevy::prelude::*;
|
||||
|
||||
pub struct AudioSystemPlugin;
|
||||
|
||||
impl Plugin for AudioSystemPlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
app
|
||||
.init_resource::<AudioAssets>()
|
||||
.add_startup_system(load_audio);
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct AudioAssets {
|
||||
pub notes: [Handle<AudioSource>; 3],
|
||||
pub reverb_notes: [Handle<AudioSource>; 3],
|
||||
pub warp_notes: [Handle<AudioSource>; 3],
|
||||
}
|
||||
|
||||
pub fn play_audio(
|
||||
audio_set: &[Handle<AudioSource>; 3],
|
||||
audio: &Res<Audio>,
|
||||
color: Vec4,
|
||||
volume: f32,
|
||||
) {
|
||||
for i in 0 .. 3 {
|
||||
audio.play_with_settings(
|
||||
audio_set[i].clone(),
|
||||
PlaybackSettings::ONCE.with_volume(color[i] * volume)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
fn load_audio(
|
||||
mut audio_assets: ResMut<AudioAssets>,
|
||||
asset_server: Res<AssetServer>,
|
||||
) {
|
||||
audio_assets.notes[0] = asset_server.load::<AudioSource, &str>("sound/notes/a5.ogg");
|
||||
audio_assets.notes[1] = asset_server.load::<AudioSource, &str>("sound/notes/cs6.ogg");
|
||||
audio_assets.notes[2] = asset_server.load::<AudioSource, &str>("sound/notes/e6.ogg");
|
||||
|
||||
audio_assets.reverb_notes[0] = asset_server.load::<AudioSource, &str>("sound/reverb_notes/a5.ogg");
|
||||
audio_assets.reverb_notes[1] = asset_server.load::<AudioSource, &str>("sound/reverb_notes/cs6.ogg");
|
||||
audio_assets.reverb_notes[2] = asset_server.load::<AudioSource, &str>("sound/reverb_notes/e6.ogg");
|
||||
|
||||
audio_assets.warp_notes[0] = asset_server.load::<AudioSource, &str>("sound/warp_notes/a5.ogg");
|
||||
audio_assets.warp_notes[1] = asset_server.load::<AudioSource, &str>("sound/warp_notes/cs6.ogg");
|
||||
audio_assets.warp_notes[2] = asset_server.load::<AudioSource, &str>("sound/warp_notes/e6.ogg");
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue