pub struct ManiaPerformance<'map> { /* private fields */ }Expand description
Performance calculator on osu!mania maps.
Implementations§
Source§impl<'map> ManiaPerformance<'map>
impl<'map> ManiaPerformance<'map>
Sourcepub fn new(map_or_attrs: impl IntoModePerformance<'map, Mania>) -> Self
pub fn new(map_or_attrs: impl IntoModePerformance<'map, Mania>) -> Self
Create a new performance calculator for osu!mania maps.
The argument map_or_attrs must be either
- previously calculated attributes (
ManiaDifficultyAttributesorManiaPerformanceAttributes) - a
Beatmap(by reference or value)
If a map is given, difficulty attributes will need to be calculated internally which is a costly operation. Hence, passing attributes should be prefered.
However, when passing previously calculated attributes, make sure they
have been calculated for the same map and Difficulty settings.
Otherwise, the final attributes will be incorrect.
Sourcepub fn try_new(map_or_attrs: impl IntoPerformance<'map>) -> Option<Self>
pub fn try_new(map_or_attrs: impl IntoPerformance<'map>) -> Option<Self>
Try to create a new performance calculator for osu!mania maps.
Returns None if map_or_attrs does not belong to osu!mania i.e.
a DifficultyAttributes or PerformanceAttributes of a different
mode.
See ManiaPerformance::new for more information.
Sourcepub fn mods(self, mods: impl Into<GameMods>) -> Self
pub fn mods(self, mods: impl Into<GameMods>) -> Self
Specify mods.
Accepted types are
Sourcepub fn difficulty(self, difficulty: Difficulty) -> Self
pub fn difficulty(self, difficulty: Difficulty) -> Self
Use the specified settings of the given Difficulty.
Sourcepub fn passed_objects(self, passed_objects: u32) -> Self
pub fn passed_objects(self, passed_objects: u32) -> Self
Amount of passed objects for partial plays, e.g. a fail.
If you want to calculate the performance after every few objects,
instead of using ManiaPerformance multiple times with different
passed_objects, you should use ManiaGradualPerformance.
Sourcepub fn clock_rate(self, clock_rate: f64) -> Self
pub fn clock_rate(self, clock_rate: f64) -> Self
Adjust the clock rate used in the calculation.
If none is specified, it will take the clock rate based on the mods i.e. 1.5 for DT, 0.75 for HT and 1.0 otherwise.
| Minimum | Maximum |
|---|---|
| 0.01 | 100 |
Sourcepub fn hp(self, hp: f32, with_mods: bool) -> Self
pub fn hp(self, hp: f32, with_mods: bool) -> Self
Override a beatmap’s set HP.
with_mods determines if the given value should be used before
or after accounting for mods, e.g. on true the value will be
used as is and on false it will be modified based on the mods.
| Minimum | Maximum |
|---|---|
| -20 | 20 |
Sourcepub fn od(self, od: f32, with_mods: bool) -> Self
pub fn od(self, od: f32, with_mods: bool) -> Self
Override a beatmap’s set OD.
with_mods determines if the given value should be used before
or after accounting for mods, e.g. on true the value will be
used as is and on false it will be modified based on the mods.
| Minimum | Maximum |
|---|---|
| -20 | 20 |
Sourcepub fn accuracy(self, acc: f64) -> Self
pub fn accuracy(self, acc: f64) -> Self
Specify the accuracy of a play between 0.0 and 100.0.
This will be used to generate matching hitresults.
Sourcepub const fn hitresult_priority(self, priority: HitResultPriority) -> Self
pub const fn hitresult_priority(self, priority: HitResultPriority) -> Self
Specify how hitresults should be generated.
Defauls to HitResultPriority::BestCase.
Sourcepub fn lazer(self, lazer: bool) -> Self
pub fn lazer(self, lazer: bool) -> Self
Whether the calculated attributes belong to an osu!lazer or osu!stable score.
Defaults to true.
This affects internal hitresult generation because lazer (without CL
mod) gives two hitresults per hold note whereas stable only gives one.
It also affect accuracy calculation because stable makes no difference
between perfect (n320) and great (n300) hitresults but lazer (without
CL mod) rewards slightly more for perfect hitresults.
Sourcepub const fn state(self, state: ManiaScoreState) -> Self
pub const fn state(self, state: ManiaScoreState) -> Self
Provide parameters through an ManiaScoreState.
Sourcepub fn generate_state(&mut self) -> Result<ManiaScoreState, ConvertError>
pub fn generate_state(&mut self) -> Result<ManiaScoreState, ConvertError>
Create the ManiaScoreState that will be used for performance calculation.
Sourcepub fn calculate(self) -> Result<ManiaPerformanceAttributes, ConvertError>
pub fn calculate(self) -> Result<ManiaPerformanceAttributes, ConvertError>
Calculate all performance related values, including pp and stars.
Trait Implementations§
Source§impl<'map> Clone for ManiaPerformance<'map>
impl<'map> Clone for ManiaPerformance<'map>
Source§fn clone(&self) -> ManiaPerformance<'map>
fn clone(&self) -> ManiaPerformance<'map>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<'map> Debug for ManiaPerformance<'map>
impl<'map> Debug for ManiaPerformance<'map>
Source§impl<'map, T: IntoModePerformance<'map, Mania>> From<T> for ManiaPerformance<'map>
impl<'map, T: IntoModePerformance<'map, Mania>> From<T> for ManiaPerformance<'map>
Source§impl<'map> PartialEq for ManiaPerformance<'map>
impl<'map> PartialEq for ManiaPerformance<'map>
Source§impl<'map> TryFrom<OsuPerformance<'map>> for ManiaPerformance<'map>
impl<'map> TryFrom<OsuPerformance<'map>> for ManiaPerformance<'map>
Source§fn try_from(osu: OsuPerformance<'map>) -> Result<Self, Self::Error>
fn try_from(osu: OsuPerformance<'map>) -> Result<Self, Self::Error>
Try to create ManiaPerformance through OsuPerformance.
Returns None if OsuPerformance does not contain a beatmap, i.e.
if it was constructed through attributes or
OsuPerformance::generate_state was called.