summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-11-22 13:29:10 -0500
committerFreya Murphy <freya@freyacat.org>2025-11-22 13:29:10 -0500
commit2274d33e469aca544a7aeb899a10769b973ae374 (patch)
tree7ff10964234fd5e8917624508e249265a3d0b19c
parentaudio: move 'asm' files out of data segment (diff)
downloadDungeonCrawl-2274d33e469aca544a7aeb899a10769b973ae374.tar.gz
DungeonCrawl-2274d33e469aca544a7aeb899a10769b973ae374.tar.bz2
DungeonCrawl-2274d33e469aca544a7aeb899a10769b973ae374.zip
audio: refactor into seperate crate
-rw-r--r--Cargo.lock8
-rw-r--r--Cargo.toml3
-rw-r--r--audio/Cargo.toml18
-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.toml3
-rw-r--r--graphics/src/lib.rs8
13 files changed, 52 insertions, 16 deletions
diff --git a/Cargo.lock b/Cargo.lock
index dfa2443..24f74cc 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -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",
]
diff --git a/Cargo.toml b/Cargo.toml
index d0ec1b6..8af51a1 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -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;