music player
This commit is contained in:
parent
007ddf56b1
commit
e4b14d94ac
4 changed files with 48 additions and 11 deletions
BIN
assets/music/rocknrolldixie.wav
Normal file
BIN
assets/music/rocknrolldixie.wav
Normal file
Binary file not shown.
BIN
assets/music/whistler.wav
Normal file
BIN
assets/music/whistler.wav
Normal file
Binary file not shown.
14
src/main.rs
14
src/main.rs
|
|
@ -1,10 +1,11 @@
|
||||||
use bevy::{audio::Volume, prelude::*};
|
use bevy::prelude::*;
|
||||||
|
|
||||||
mod animation;
|
mod animation;
|
||||||
mod buttons;
|
mod buttons;
|
||||||
mod card;
|
mod card;
|
||||||
mod dev_tools;
|
mod dev_tools;
|
||||||
mod grid;
|
mod grid;
|
||||||
|
mod music_player;
|
||||||
mod turns;
|
mod turns;
|
||||||
mod unit;
|
mod unit;
|
||||||
|
|
||||||
|
|
@ -19,6 +20,7 @@ fn main() {
|
||||||
grid::GridPlugin,
|
grid::GridPlugin,
|
||||||
turns::TurnSystemPlugin,
|
turns::TurnSystemPlugin,
|
||||||
unit::UnitPlugin,
|
unit::UnitPlugin,
|
||||||
|
music_player::MusicPlayerPlugin,
|
||||||
))
|
))
|
||||||
.add_systems(Startup, setup)
|
.add_systems(Startup, setup)
|
||||||
.run();
|
.run();
|
||||||
|
|
@ -26,7 +28,6 @@ fn main() {
|
||||||
|
|
||||||
fn setup(asset_server: Res<AssetServer>, mut commands: Commands) {
|
fn setup(asset_server: Res<AssetServer>, mut commands: Commands) {
|
||||||
let background = asset_server.load::<Image>("sprites/field.png");
|
let background = asset_server.load::<Image>("sprites/field.png");
|
||||||
let music = asset_server.load("music/fostral.wav");
|
|
||||||
|
|
||||||
commands.spawn(Camera2d);
|
commands.spawn(Camera2d);
|
||||||
|
|
||||||
|
|
@ -34,13 +35,4 @@ fn setup(asset_server: Res<AssetServer>, mut commands: Commands) {
|
||||||
Sprite::from_image(background),
|
Sprite::from_image(background),
|
||||||
Transform::from_xyz(0., 0., -100.),
|
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