basic_usage/
basic_usage.rs

1use quaver_rs::{Qua, DifficultyProcessor, StrainConstants, ModIdentifier};
2
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    println!("Parsing .qua file...");
5    
6    // Parse the .qua file
7    let qua = Qua::from_file("assets/171402.qua")?;
8    
9    println!("Map: {} - {}", qua.metadata.title, qua.metadata.artist);
10    println!("Creator: {}", qua.metadata.creator);
11    println!("Difficulty: {}", qua.metadata.difficulty_name);
12    println!("Mode: {:?}", qua.metadata.mode);
13    println!("Hit Objects: {}", qua.hit_objects.len());
14    println!("Timing Points: {}", qua.timing_points.len());
15    
16    // Calculate difficulty
17    println!("\nCalculating difficulty...");
18    let constants = StrainConstants::new(None);
19    let mut processor = DifficultyProcessor::new(qua, constants, ModIdentifier::NONE);
20    processor.calculate_difficulty(ModIdentifier::NONE);
21    
22    println!("Overall Difficulty: {:.2}", processor.overall_difficulty);
23    println!("Average Note Density: {:.2}", processor.average_note_density);
24    println!("Map Length: {:.2}", processor.map.length());
25    println!("Hit Objects Count: {}", processor.map.hit_objects.len());
26    println!("Timing Points Count: {}", processor.map.timing_points.len());
27    
28    Ok(())
29}