quaver_rs/lib.rs
1//! # Quaver-rs
2//!
3//! A Rust library for parsing and analyzing Quaver rhythm game maps.
4//!
5//! ## Features
6//!
7//! - Parse `.qua` files (Quaver map format)
8//! - Calculate map difficulty and strain
9//! - Support for different game modes and mods
10//! - Comprehensive metadata extraction
11//!
12//! ## Example
13//!
14//! ```rust
15//! use quaver_rs::{Qua, DifficultyProcessor, StrainConstants, ModIdentifier};
16//!
17//! // Parse a .qua file
18//! let qua = Qua::from_file("path/to/map.qua")?;
19//!
20//! // Calculate difficulty
21//! let constants = StrainConstants::new(None);
22//! let mut processor = DifficultyProcessor::new(qua, constants, ModIdentifier::NONE);
23//! processor.calculate_difficulty(ModIdentifier::NONE);
24//!
25//! println!("Overall Difficulty: {:.2}", processor.overall_difficulty);
26//! ```
27
28pub mod hit_object_info;
29pub mod rulesets;
30pub mod difficulty_processor;
31pub mod qua;
32pub mod enums;
33pub mod helpers;
34
35// Re-export main types for easy access
36pub use qua::{Qua, MapMetadata, TimingPointInfo, TimingGroup, EditorLayerInfo, BookmarkInfo, CustomAudioSampleInfo, SoundEffectInfo};
37pub use difficulty_processor::{DifficultyProcessor, StrainConstants, StrainConstantsKeys, ConstantVariable};
38pub use enums::{ModIdentifier, GameMode, QssPatternFlags};
39pub use hit_object_info::HitObjectInfo;
40
41// Re-export ruleset types
42pub use rulesets::structs::{
43 FingerAction, FingerState, Hand, LnLayerType,
44 StrainSolverData, StrainSolverHitObject
45};
46
47// Re-export helper modules
48pub use helpers::{mod_helper, mode_helper};