bevy-game

A bevy game
git clone git://archive.git.mtrnord.blog/MTRNord/bevy-game.git
Log | Files | Refs | README | LICENSE

audio.rs (985B)


      1 use crate::actions::Actions;
      2 use crate::loading::AudioAssets;
      3 use crate::GameState;
      4 use bevy::prelude::*;
      5 use bevy_kira_audio::{Audio, AudioPlugin};
      6 
      7 pub struct InternalAudioPlugin;
      8 
      9 // This plugin is responsible to control the game audio
     10 impl Plugin for InternalAudioPlugin {
     11     fn build(&self, app: &mut App) {
     12         app.add_plugin(AudioPlugin)
     13             .add_system_set(
     14                 SystemSet::on_enter(GameState::Playing).with_system(start_audio.system()),
     15             )
     16             .add_system_set(
     17                 SystemSet::on_update(GameState::Playing).with_system(control_flying_sound.system()),
     18             );
     19     }
     20 }
     21 
     22 fn start_audio(audio_assets: Res<AudioAssets>, audio: Res<Audio>) {
     23     audio.set_volume(0.3);
     24     audio.play_looped(audio_assets.flying.clone());
     25     audio.pause();
     26 }
     27 
     28 fn control_flying_sound(actions: Res<Actions>, audio: Res<Audio>) {
     29     if actions.player_movement.is_some() {
     30         audio.resume();
     31     } else {
     32         audio.pause()
     33     }
     34 }