1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
pub mod error;

use crate::osu_file::types::Decimal;

use crate::helper::macros::*;

pub use error::*;

versioned_field!(HPDrainRate, Decimal, no_versions, |s| { s.parse() } -> (),,);
versioned_field!(CircleSize, Decimal, no_versions, |s| { s.parse() } -> (),,);
versioned_field!(OverallDifficulty, Decimal, no_versions, |s| { s.parse() } -> (),,);
versioned_field!(ApproachRate, Decimal, no_versions, |s| { s.parse() } -> (),,);
versioned_field!(SliderMultiplier, Decimal, no_versions, |s| { s.parse() } -> (),,);
versioned_field!(SliderTickRate, Decimal, no_versions, |s| { s.parse() } -> (),,);

general_section!(
    /// Difficulty settings.
    pub struct Difficulty {
        /// `HP` settings.
        pub hp_drain_rate: HPDrainRate,
        /// `CS` settings.
        pub circle_size: CircleSize,
        /// `OD` settings.
        pub overall_difficulty: OverallDifficulty,
        /// `AR` settings.
        pub approach_rate: ApproachRate,
        /// Base slider velocity in hundreds of `osu!pixels` per beat.
        pub slider_multiplier: SliderMultiplier,
        /// Amount of slider ticks per beat.
        pub slider_tickrate: SliderTickRate,
    },
    ParseError,
    "",
    {
        3..=4,
        SliderMultipler: 1,
        SliderTickRate: 1,
    }
);