osu_file_parser/osu_file/difficulty/
mod.rs

1pub mod error;
2
3use crate::osu_file::types::Decimal;
4
5use crate::helper::macros::*;
6
7pub use error::*;
8
9versioned_field!(HPDrainRate, Decimal, no_versions, |s| { s.parse() } -> (),,);
10versioned_field!(CircleSize, Decimal, no_versions, |s| { s.parse() } -> (),,);
11versioned_field!(OverallDifficulty, Decimal, no_versions, |s| { s.parse() } -> (),,);
12versioned_field!(ApproachRate, Decimal, no_versions, |s| { s.parse() } -> (),,);
13versioned_field!(SliderMultiplier, Decimal, no_versions, |s| { s.parse() } -> (),,);
14versioned_field!(SliderTickRate, Decimal, no_versions, |s| { s.parse() } -> (),,);
15
16general_section!(
17    /// Difficulty settings.
18    pub struct Difficulty {
19        /// `HP` settings.
20        pub hp_drain_rate: HPDrainRate,
21        /// `CS` settings.
22        pub circle_size: CircleSize,
23        /// `OD` settings.
24        pub overall_difficulty: OverallDifficulty,
25        /// `AR` settings.
26        pub approach_rate: ApproachRate,
27        /// Base slider velocity in hundreds of `osu!pixels` per beat.
28        pub slider_multiplier: SliderMultiplier,
29        /// Amount of slider ticks per beat.
30        pub slider_tickrate: SliderTickRate,
31    },
32    ParseError,
33    "",
34    {
35        3..=4,
36        SliderMultipler: 1,
37        SliderTickRate: 1,
38    }
39);