rosu_pp/mania/
mod.rs

1use rosu_map::section::general::GameMode;
2
3use crate::{
4    model::{
5        beatmap::Beatmap,
6        mode::{ConvertError, IGameMode},
7    },
8    Difficulty, GameMods,
9};
10
11pub use self::{
12    attributes::{ManiaDifficultyAttributes, ManiaPerformanceAttributes},
13    difficulty::gradual::ManiaGradualDifficulty,
14    performance::{gradual::ManiaGradualPerformance, ManiaPerformance},
15    score_state::ManiaScoreState,
16    strains::ManiaStrains,
17};
18
19mod attributes;
20mod convert;
21mod difficulty;
22mod object;
23mod performance;
24mod score_state;
25mod strains;
26
27/// Marker type for [`GameMode::Mania`].
28///
29/// [`GameMode::Mania`]: rosu_map::section::general::GameMode::Mania
30pub struct Mania;
31
32impl Mania {
33    pub(crate) fn convert(map: &mut Beatmap, mods: &GameMods) {
34        debug_assert!(!map.is_convert && map.mode == GameMode::Osu);
35        convert::convert(map, mods);
36    }
37}
38
39impl IGameMode for Mania {
40    type DifficultyAttributes = ManiaDifficultyAttributes;
41    type Strains = ManiaStrains;
42    type Performance<'map> = ManiaPerformance<'map>;
43    type GradualDifficulty = ManiaGradualDifficulty;
44    type GradualPerformance = ManiaGradualPerformance;
45
46    fn difficulty(
47        difficulty: &Difficulty,
48        map: &Beatmap,
49    ) -> Result<Self::DifficultyAttributes, ConvertError> {
50        difficulty::difficulty(difficulty, map)
51    }
52
53    fn strains(difficulty: &Difficulty, map: &Beatmap) -> Result<Self::Strains, ConvertError> {
54        strains::strains(difficulty, map)
55    }
56
57    fn performance(map: &Beatmap) -> Self::Performance<'_> {
58        ManiaPerformance::new(map)
59    }
60
61    fn gradual_difficulty(
62        difficulty: Difficulty,
63        map: &Beatmap,
64    ) -> Result<Self::GradualDifficulty, ConvertError> {
65        ManiaGradualDifficulty::new(difficulty, map)
66    }
67
68    fn gradual_performance(
69        difficulty: Difficulty,
70        map: &Beatmap,
71    ) -> Result<Self::GradualPerformance, ConvertError> {
72        ManiaGradualPerformance::new(difficulty, map)
73    }
74}