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};