Made pathing AsRef but with more bounds due to thread shenanigans, locked behind audio feature
This commit is contained in:
parent
b8ddcdb423
commit
22b71a3ffe
|
@ -15,8 +15,9 @@ version = "0.35.2"
|
||||||
features = ["image", "ttf"]
|
features = ["image", "ttf"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
rodio = "0.15.0"
|
rodio = { version = "0.11.1", optional = true}
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = []
|
default = []
|
||||||
static = ["sdl2/static-link", "sdl2/bundled"]
|
static = ["sdl2/static-link", "sdl2/bundled"]
|
||||||
|
audio = ["dep:rodio"]
|
||||||
|
|
BIN
output.mp3
Normal file
BIN
output.mp3
Normal file
Binary file not shown.
13
src/lib.rs
13
src/lib.rs
|
@ -100,7 +100,7 @@ use std::{
|
||||||
path::Path,
|
path::Path,
|
||||||
slice::IterMut,
|
slice::IterMut,
|
||||||
};
|
};
|
||||||
use std::{thread, time, process::Command};
|
use std::{thread};
|
||||||
use sdl2::{
|
use sdl2::{
|
||||||
image::ImageRWops,
|
image::ImageRWops,
|
||||||
mouse::MouseButton,
|
mouse::MouseButton,
|
||||||
|
@ -776,20 +776,19 @@ impl Game {
|
||||||
/// ```
|
/// ```
|
||||||
/// play(String::from("/path/to/song.mp3", 15));
|
/// play(String::from("/path/to/song.mp3", 15));
|
||||||
/// ```
|
/// ```
|
||||||
pub fn play(x: String, y: u64) -> thread::JoinHandle<()> {
|
#[cfg(feature = "audio")]
|
||||||
let wack = thread::spawn(move || {
|
pub fn play<P: AsRef<Path> + std::marker::Send + 'static>(x: P, y: u64) -> thread::JoinHandle<()> {
|
||||||
|
thread::spawn(move || {
|
||||||
let (_stream, stream_handle) = OutputStream::try_default().unwrap();
|
let (_stream, stream_handle) = OutputStream::try_default().unwrap();
|
||||||
// Load a sound from a file, using a path relative to Cargo.toml
|
// Load a sound from a file, using a path relative to Cargo.toml
|
||||||
let file = BufReader::new(File::open(x).unwrap());
|
let file = BufReader::new(File::open(x).unwrap());
|
||||||
// Decode that sound file into a source
|
// Decode that sound file into a source
|
||||||
let source = Decoder::new(file).unwrap();
|
let source = Decoder::new(file).unwrap();
|
||||||
// Play the sound directly on the device
|
// Play the sound directly on the device
|
||||||
stream_handle.play_raw(source.convert_samples());
|
stream_handle.play_raw(source.convert_samples()).unwrap();
|
||||||
|
|
||||||
// The sound plays in a separate audio thread,
|
// The sound plays in a separate audio thread,
|
||||||
// so we need to keep the main thread alive while it's playing.
|
// so we need to keep the main thread alive while it's playing.
|
||||||
std::thread::sleep(std::time::Duration::from_secs(y));
|
std::thread::sleep(std::time::Duration::from_secs(y));
|
||||||
|
})
|
||||||
});
|
|
||||||
wack
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#![warn(clippy::pedantic)]
|
#![warn(clippy::pedantic)]
|
||||||
|
|
||||||
use cat_box::{draw_text, get_keyboard_state, get_mouse_state, Game, Sprite, SpriteCollection};
|
use cat_box::{draw_text, get_keyboard_state, get_mouse_state, Game, Sprite, SpriteCollection, play};
|
||||||
use sdl2::keyboard::Scancode;
|
use sdl2::keyboard::Scancode;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
@ -19,6 +19,7 @@ fn main() {
|
||||||
coll.push(x);
|
coll.push(x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
play(String::from("output.mp3"), 120);
|
||||||
game.run(|ctx| {
|
game.run(|ctx| {
|
||||||
i = (i + 1) % 255;
|
i = (i + 1) % 255;
|
||||||
ctx.set_background_colour(i as u8, 64, 255);
|
ctx.set_background_colour(i as u8, 64, 255);
|
||||||
|
|
Loading…
Reference in a new issue