music player
This commit is contained in:
parent
007ddf56b1
commit
e4b14d94ac
4 changed files with 48 additions and 11 deletions
14
src/main.rs
14
src/main.rs
|
|
@ -1,10 +1,11 @@
|
|||
use bevy::{audio::Volume, prelude::*};
|
||||
use bevy::prelude::*;
|
||||
|
||||
mod animation;
|
||||
mod buttons;
|
||||
mod card;
|
||||
mod dev_tools;
|
||||
mod grid;
|
||||
mod music_player;
|
||||
mod turns;
|
||||
mod unit;
|
||||
|
||||
|
|
@ -19,6 +20,7 @@ fn main() {
|
|||
grid::GridPlugin,
|
||||
turns::TurnSystemPlugin,
|
||||
unit::UnitPlugin,
|
||||
music_player::MusicPlayerPlugin,
|
||||
))
|
||||
.add_systems(Startup, setup)
|
||||
.run();
|
||||
|
|
@ -26,7 +28,6 @@ fn main() {
|
|||
|
||||
fn setup(asset_server: Res<AssetServer>, mut commands: Commands) {
|
||||
let background = asset_server.load::<Image>("sprites/field.png");
|
||||
let music = asset_server.load("music/fostral.wav");
|
||||
|
||||
commands.spawn(Camera2d);
|
||||
|
||||
|
|
@ -34,13 +35,4 @@ fn setup(asset_server: Res<AssetServer>, mut commands: Commands) {
|
|||
Sprite::from_image(background),
|
||||
Transform::from_xyz(0., 0., -100.),
|
||||
));
|
||||
|
||||
commands.spawn((
|
||||
AudioPlayer::new(music),
|
||||
PlaybackSettings {
|
||||
volume: Volume::Linear(0.2),
|
||||
mode: bevy::audio::PlaybackMode::Loop,
|
||||
..default()
|
||||
},
|
||||
));
|
||||
}
|
||||
|
|
|
|||
45
src/music_player.rs
Normal file
45
src/music_player.rs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
use bevy::{audio::Volume, prelude::*};
|
||||
use rand::random_range;
|
||||
|
||||
pub struct MusicPlayerPlugin;
|
||||
|
||||
impl Plugin for MusicPlayerPlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
app.add_systems(Startup, setup)
|
||||
.add_systems(Update, try_play);
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Resource)]
|
||||
struct Soundtrack(Vec<Handle<AudioSource>>);
|
||||
|
||||
#[derive(Component)]
|
||||
struct MusicPlayer;
|
||||
|
||||
fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
|
||||
commands.insert_resource(Soundtrack(vec![
|
||||
asset_server.load("music/fostral.wav"),
|
||||
asset_server.load("music/glorx.wav"),
|
||||
asset_server.load("music/rocknrolldixie.wav"),
|
||||
asset_server.load("music/whistler.wav"),
|
||||
]));
|
||||
|
||||
commands.spawn(MusicPlayer);
|
||||
}
|
||||
|
||||
fn try_play(
|
||||
mut commands: Commands,
|
||||
player: Option<Single<Entity, (With<MusicPlayer>, Without<AudioPlayer>)>>,
|
||||
soundtrack: Res<Soundtrack>,
|
||||
) {
|
||||
if let Some(music_player) = player {
|
||||
commands.entity(music_player.entity()).insert((
|
||||
AudioPlayer::new(soundtrack.0[random_range(0..soundtrack.0.len())].clone()),
|
||||
PlaybackSettings {
|
||||
volume: Volume::Linear(0.2),
|
||||
mode: bevy::audio::PlaybackMode::Remove,
|
||||
..default()
|
||||
},
|
||||
));
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue