diff options
| author | Freya Murphy <freya@freyacat.org> | 2025-11-22 13:29:10 -0500 |
|---|---|---|
| committer | Freya Murphy <freya@freyacat.org> | 2025-11-22 13:29:10 -0500 |
| commit | 2274d33e469aca544a7aeb899a10769b973ae374 (patch) | |
| tree | 7ff10964234fd5e8917624508e249265a3d0b19c | |
| parent | audio: move 'asm' files out of data segment (diff) | |
| download | DungeonCrawl-2274d33e469aca544a7aeb899a10769b973ae374.tar.gz DungeonCrawl-2274d33e469aca544a7aeb899a10769b973ae374.tar.bz2 DungeonCrawl-2274d33e469aca544a7aeb899a10769b973ae374.zip | |
audio: refactor into seperate crate
| -rw-r--r-- | Cargo.lock | 8 | ||||
| -rw-r--r-- | Cargo.toml | 3 | ||||
| -rw-r--r-- | audio/Cargo.toml | 18 | ||||
| -rw-r--r-- | audio/src/channel.rs (renamed from graphics/src/audio/channel.rs) | 2 | ||||
| -rw-r--r-- | audio/src/data.rs (renamed from graphics/src/audio/data.rs) | 4 | ||||
| -rw-r--r-- | audio/src/lib.rs (renamed from graphics/src/audio/mod.rs) | 13 | ||||
| -rw-r--r-- | audio/src/parse/lex.rs (renamed from graphics/src/audio/parse/lex.rs) | 2 | ||||
| -rw-r--r-- | audio/src/parse/macros.rs (renamed from graphics/src/audio/parse/macros.rs) | 0 | ||||
| -rw-r--r-- | audio/src/parse/mod.rs (renamed from graphics/src/audio/parse/mod.rs) | 3 | ||||
| -rw-r--r-- | audio/src/parse/parser.rs (renamed from graphics/src/audio/parse/parser.rs) | 2 | ||||
| -rw-r--r-- | audio/src/program.rs (renamed from graphics/src/audio/program.rs) | 2 | ||||
| -rw-r--r-- | graphics/Cargo.toml | 3 | ||||
| -rw-r--r-- | graphics/src/lib.rs | 8 |
13 files changed, 52 insertions, 16 deletions
@@ -41,6 +41,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a464143cc82dedcdc3928737445362466b7674b5db4e2eb8e869846d6d84f4f6" [[package]] +name = "audio" +version = "0.1.0" +dependencies = [ + "raylib", +] + +[[package]] name = "bindgen" version = "0.71.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -184,6 +191,7 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" name = "graphics" version = "0.1.0" dependencies = [ + "audio", "dungeon", "raylib", ] @@ -1,6 +1,6 @@ [workspace] resolver = "2" -members = ["dungeon", "game", "graphics"] +members = ["audio","dungeon", "game", "graphics"] [workspace.package] version = "0.1.0" @@ -16,6 +16,7 @@ publish = false rust-version = "1.88" [workspace.dependencies] +audio = { path = "audio" } dungeon = { path = "dungeon" } game = { path = "game" } getrandom = "0.3" diff --git a/audio/Cargo.toml b/audio/Cargo.toml new file mode 100644 index 0000000..58f18a2 --- /dev/null +++ b/audio/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "audio" +version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true +publish.workspace = true +rust-version.workspace = true + +[dependencies] +raylib.workspace = true + +[lints] +workspace = true + +[features] +default = [] +static = [] diff --git a/graphics/src/audio/channel.rs b/audio/src/channel.rs index a1ad144..7ed61a6 100644 --- a/graphics/src/audio/channel.rs +++ b/audio/src/channel.rs @@ -5,7 +5,7 @@ type Music = raylib::audio::Music<'static>; macro_rules! load_audio { ($handle:expr, $filepath:expr) => {{ let mut audio = if cfg!(any(feature = "static", target_arch = "wasm32")) { - let bytes = include_bytes!(concat!("../../../", $filepath)); + let bytes = include_bytes!(concat!("../../", $filepath)); let vec = Vec::from(bytes); $handle.new_music_from_memory(".wav", &vec)? } else { diff --git a/graphics/src/audio/data.rs b/audio/src/data.rs index 9c68523..2d1bdc5 100644 --- a/graphics/src/audio/data.rs +++ b/audio/src/data.rs @@ -1,10 +1,10 @@ -use crate::audio::program::Program; +use crate::program::Program; use std::fs; macro_rules! load_asm { ($path:tt) => {{ if cfg!(any(feature = "static", target_arch = "wasm32")) { - let src = include_str!(concat!("../../../", $path)); + let src = include_str!(concat!("../../", $path)); Program::parse(src, true)? } else { let src = fs::read_to_string($path)?; diff --git a/graphics/src/audio/mod.rs b/audio/src/lib.rs index 2b85a0f..b2d3e87 100644 --- a/graphics/src/audio/mod.rs +++ b/audio/src/lib.rs @@ -1,17 +1,22 @@ //! The `audio` crate stores all audio assets that need to be loaded during runtime +use raylib::audio::RaylibAudio; use std::time::{Duration, Instant}; use channel::{Channel, NoiseChannel, PulseChannel, TriangleChannel}; -use raylib::audio::RaylibAudio; - -use crate::audio::data::Data; +use data::Data; mod channel; mod data; mod parse; mod program; +/// The `Error` type used within this crate +pub type Error = Box<dyn std::error::Error>; + +/// The `Result` type used witin this crate +pub type Result<T> = std::result::Result<T, crate::Error>; + const AUDIO_FPS: u32 = 60; const TIME_SLICE: Duration = Duration::from_millis(1000 / AUDIO_FPS as u64); @@ -66,7 +71,7 @@ pub struct Audio { pub data: Data, } impl Audio { - pub(crate) fn load() -> crate::Result<Self> { + pub fn load() -> crate::Result<Self> { let channels = Channels::load()?; let last = Instant::now(); let data = Data::load()?; diff --git a/graphics/src/audio/parse/lex.rs b/audio/src/parse/lex.rs index 9969c9e..0ef8d47 100644 --- a/graphics/src/audio/parse/lex.rs +++ b/audio/src/parse/lex.rs @@ -5,7 +5,7 @@ use std::{ }; use super::Result; -use crate::audio::{channel::DutyCycle, program::ChanSpec}; +use crate::{channel::DutyCycle, program::ChanSpec}; #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum Token { diff --git a/graphics/src/audio/parse/macros.rs b/audio/src/parse/macros.rs index 1dc33eb..1dc33eb 100644 --- a/graphics/src/audio/parse/macros.rs +++ b/audio/src/parse/macros.rs diff --git a/graphics/src/audio/parse/mod.rs b/audio/src/parse/mod.rs index 9ff243d..726aaa2 100644 --- a/graphics/src/audio/parse/mod.rs +++ b/audio/src/parse/mod.rs @@ -1,4 +1,5 @@ -use crate::audio::{parse::parser::Parser, program::Instruction}; +use crate::program::Instruction; +use parser::Parser; pub type Result<T> = std::result::Result<T, String>; diff --git a/graphics/src/audio/parse/parser.rs b/audio/src/parse/parser.rs index 5157fa1..b46e707 100644 --- a/graphics/src/audio/parse/parser.rs +++ b/audio/src/parse/parser.rs @@ -1,6 +1,6 @@ use std::iter::Peekable; -use crate::audio::program::{ChanSpec, Instruction}; +use crate::program::{ChanSpec, Instruction}; use super::{ Result, diff --git a/graphics/src/audio/program.rs b/audio/src/program.rs index f5decd6..28a5f41 100644 --- a/graphics/src/audio/program.rs +++ b/audio/src/program.rs @@ -1,4 +1,4 @@ -use crate::audio::{ +use crate::{ Channels, channel::{Channel, DutyCycle}, parse, diff --git a/graphics/Cargo.toml b/graphics/Cargo.toml index 0240745..0687272 100644 --- a/graphics/Cargo.toml +++ b/graphics/Cargo.toml @@ -8,6 +8,7 @@ publish.workspace = true rust-version.workspace = true [dependencies] +audio.workspace = true dungeon.workspace = true raylib.workspace = true @@ -19,7 +20,7 @@ default = [] x11 = ["raylib/GLFW_BUILD_X11"] wayland = ["raylib/wayland", "raylib/GLFW_BUILD_WAYLAND"] sdl = ["raylib/sdl", "raylib/SUPPORT_MODULE_RTEXT"] -static = [] +static = ["audio/static"] # Individual features seem to currently be # broken on windows diff --git a/graphics/src/lib.rs b/graphics/src/lib.rs index 63233f5..fa83b98 100644 --- a/graphics/src/lib.rs +++ b/graphics/src/lib.rs @@ -3,13 +3,15 @@ use std::time::Duration; +use audio::Audio; use dungeon::Dungeon; -use raylib::prelude::*; +use raylib::{ + RaylibHandle, RaylibThread, + ffi::{KeyboardKey, TraceLogLevel}, +}; -use crate::audio::Audio; use crate::render::Renderer; -mod audio; mod render; mod timer; |