Merge branch 'MaxOhn:main' into main

This commit is contained in:
James Wilson
2024-11-21 10:23:19 +00:00
committed by GitHub
3 changed files with 19 additions and 21 deletions
-1
View File
@@ -310,7 +310,6 @@ impl_has_mod! {
ht: + HalfTime ["HalfTime"],
ap: + Autopilot ["Autopilot"],
bl: - Blinds ["Blinds"],
cl: - Classic ["Classic"],
tc: - Traceable ["Traceable"],
}
+13 -14
View File
@@ -371,13 +371,13 @@ impl<'map> OsuPerformance<'map> {
let mut n100 = self.n100.map_or(0, |n| cmp::min(n, n_remaining));
let mut n50 = self.n50.map_or(0, |n| cmp::min(n, n_remaining));
let classic = self.difficulty.get_mods().cl();
let lazer = self.difficulty.get_lazer();
let using_classic_slider_acc = self.difficulty.get_mods().no_slider_head_acc(lazer);
let (origin, slider_end_hits, large_tick_hits) = match (lazer, classic) {
let (origin, slider_end_hits, large_tick_hits) = match (lazer, using_classic_slider_acc) {
(false, _) => (OsuScoreOrigin::Stable, 0, 0),
(true, false) => {
let origin = OsuScoreOrigin::LazerWithoutClassic {
let origin = OsuScoreOrigin::WithSliderAcc {
max_large_ticks: attrs.n_slider_ticks,
max_slider_ends: attrs.n_sliders,
};
@@ -393,7 +393,7 @@ impl<'map> OsuPerformance<'map> {
(origin, slider_end_hits, large_tick_hits)
}
(true, true) => {
let origin = OsuScoreOrigin::LazerWithClassic {
let origin = OsuScoreOrigin::WithoutSliderAcc {
max_large_ticks: attrs.n_sliders + attrs.n_slider_ticks,
max_slider_ends: attrs.n_sliders,
};
@@ -414,14 +414,14 @@ impl<'map> OsuPerformance<'map> {
let (slider_acc_value, max_slider_acc_value) = match origin {
OsuScoreOrigin::Stable => (0, 0),
OsuScoreOrigin::LazerWithoutClassic {
OsuScoreOrigin::WithSliderAcc {
max_large_ticks,
max_slider_ends,
} => (
150 * slider_end_hits + 30 * large_tick_hits,
150 * max_slider_ends + 30 * max_large_ticks,
),
OsuScoreOrigin::LazerWithClassic {
OsuScoreOrigin::WithoutSliderAcc {
max_large_ticks,
max_slider_ends,
} => (
@@ -656,7 +656,6 @@ impl<'map> OsuPerformance<'map> {
let mods = self.difficulty.get_mods();
let lazer = self.difficulty.get_lazer();
let classic = mods.cl();
let using_classic_slider_acc = mods.no_slider_head_acc(lazer);
let mut effective_miss_count = f64::from(state.misses);
@@ -693,13 +692,13 @@ impl<'map> OsuPerformance<'map> {
effective_miss_count = effective_miss_count.max(f64::from(state.misses));
effective_miss_count = effective_miss_count.min(f64::from(state.total_hits()));
let origin = match (lazer, classic) {
let origin = match (lazer, using_classic_slider_acc) {
(false, _) => OsuScoreOrigin::Stable,
(true, false) => OsuScoreOrigin::LazerWithoutClassic {
(true, false) => OsuScoreOrigin::WithSliderAcc {
max_large_ticks: attrs.n_slider_ticks,
max_slider_ends: attrs.n_sliders,
},
(true, true) => OsuScoreOrigin::LazerWithClassic {
(true, true) => OsuScoreOrigin::WithoutSliderAcc {
max_large_ticks: attrs.n_sliders + attrs.n_slider_ticks,
max_slider_ends: attrs.n_sliders,
},
@@ -1139,7 +1138,7 @@ impl NoComboState {
match origin {
OsuScoreOrigin::Stable => {}
OsuScoreOrigin::LazerWithoutClassic {
OsuScoreOrigin::WithSliderAcc {
max_large_ticks,
max_slider_ends,
} => {
@@ -1149,7 +1148,7 @@ impl NoComboState {
numerator += 150 * slider_end_hits + 30 * large_tick_hits;
denominator += 150 * max_slider_ends + 30 * max_large_ticks;
}
OsuScoreOrigin::LazerWithClassic {
OsuScoreOrigin::WithoutSliderAcc {
max_large_ticks,
max_slider_ends,
} => {
@@ -1238,7 +1237,7 @@ mod test {
let (origin, slider_end_hits, large_tick_hits) = match (lazer, classic) {
(false, _) => (OsuScoreOrigin::Stable, 0, 0),
(true, false) => {
let origin = OsuScoreOrigin::LazerWithoutClassic {
let origin = OsuScoreOrigin::WithSliderAcc {
max_large_ticks: N_SLIDER_TICKS,
max_slider_ends: N_SLIDERS,
};
@@ -1251,7 +1250,7 @@ mod test {
(origin, slider_end_hits, large_tick_hits)
}
(true, true) => {
let origin = OsuScoreOrigin::LazerWithClassic {
let origin = OsuScoreOrigin::WithoutSliderAcc {
max_large_ticks: N_SLIDERS + N_SLIDER_TICKS,
max_slider_ends: N_SLIDERS,
};
+6 -6
View File
@@ -53,7 +53,7 @@ impl OsuScoreState {
match origin {
OsuScoreOrigin::Stable => {}
OsuScoreOrigin::LazerWithoutClassic {
OsuScoreOrigin::WithSliderAcc {
max_large_ticks,
max_slider_ends,
} => {
@@ -63,7 +63,7 @@ impl OsuScoreState {
numerator += 150 * slider_end_hits + 30 * large_tick_hits;
denominator += 150 * max_slider_ends + 30 * max_large_ticks;
}
OsuScoreOrigin::LazerWithClassic {
OsuScoreOrigin::WithoutSliderAcc {
max_large_ticks,
max_slider_ends,
} => {
@@ -94,13 +94,13 @@ impl Default for OsuScoreState {
pub enum OsuScoreOrigin {
/// For scores set on osu!stable
Stable,
/// For scores set on osu!lazer without the `Classic` mod
LazerWithoutClassic {
/// For scores set on osu!lazer with slider accuracy
WithSliderAcc {
max_large_ticks: u32,
max_slider_ends: u32,
},
/// For scores set on osu!lazer with the `Classic` mod
LazerWithClassic {
/// For scores set on osu!lazer without slider accuracy
WithoutSliderAcc {
max_large_ticks: u32,
max_slider_ends: u32,
},