fix: refactor get_precision_adjusted_beat_len

This commit is contained in:
MaxOhn
2024-10-11 16:58:48 +02:00
committed by tsunyoku
parent 3bb27551b9
commit eba1259a22
5 changed files with 20 additions and 43 deletions
+1 -12
View File
@@ -11,6 +11,7 @@ use crate::{
control_point::{DifficultyPoint, TimingPoint}, control_point::{DifficultyPoint, TimingPoint},
hit_object::Slider, hit_object::Slider,
}, },
util::get_precision_adjusted_beat_len,
}; };
pub struct JuiceStream<'a> { pub struct JuiceStream<'a> {
@@ -159,15 +160,3 @@ pub struct JuiceStreamBufs {
pub curve: CurveBuffers, pub curve: CurveBuffers,
pub ticks: Vec<SliderEvent>, pub ticks: Vec<SliderEvent>,
} }
fn get_precision_adjusted_beat_len(slider_velocity_multiplier: f64, beat_len: f64) -> f64 {
let slider_velocity_as_beat_len = -100.0 / slider_velocity_multiplier;
let bpm_multiplier = if slider_velocity_as_beat_len < 0.0 {
f64::from(((-slider_velocity_as_beat_len) as f32).clamp(10.0, 10_000.0)) / 100.0
} else {
1.0
};
beat_len * bpm_multiplier
}
@@ -12,7 +12,7 @@ use crate::{
control_point::{DifficultyPoint, EffectPoint, TimingPoint}, control_point::{DifficultyPoint, EffectPoint, TimingPoint},
hit_object::HitObject, hit_object::HitObject,
}, },
util::random::Random, util::{get_precision_adjusted_beat_len, random::Random},
}; };
use super::PatternGenerator; use super::PatternGenerator;
@@ -46,10 +46,10 @@ impl<'h> PathObjectPatternGenerator<'h> {
.timing_point_at(hit_object.start_time) .timing_point_at(hit_object.start_time)
.map_or(TimingPoint::DEFAULT_BEAT_LEN, |point| point.beat_len); .map_or(TimingPoint::DEFAULT_BEAT_LEN, |point| point.beat_len);
let bpm_multiplier = orig let slider_velocity = orig
.difficulty_point_at(hit_object.start_time) .difficulty_point_at(hit_object.start_time)
.map_or(DifficultyPoint::DEFAULT_BPM_MULTIPLIER, |point| { .map_or(DifficultyPoint::DEFAULT_SLIDER_VELOCITY, |point| {
point.bpm_multiplier point.slider_velocity
}); });
let kiai = orig let kiai = orig
@@ -62,7 +62,7 @@ impl<'h> PathObjectPatternGenerator<'h> {
PatternType::LOW_PROBABILITY PatternType::LOW_PROBABILITY
}; };
let beat_len = timing_beat_len * bpm_multiplier; let beat_len = get_precision_adjusted_beat_len(slider_velocity, timing_beat_len);
let span_count = (repeats + 1) as i32; let span_count = (repeats + 1) as i32;
let start_time = hit_object.start_time.round_ties_even() as i32; let start_time = hit_object.start_time.round_ties_even() as i32;
+1 -13
View File
@@ -13,7 +13,7 @@ use crate::{
control_point::{DifficultyPoint, TimingPoint}, control_point::{DifficultyPoint, TimingPoint},
hit_object::{HitObject, HitObjectKind, HoldNote, Slider, Spinner}, hit_object::{HitObject, HitObjectKind, HoldNote, Slider, Spinner},
}, },
util::sort, util::{get_precision_adjusted_beat_len, sort},
}; };
use super::{convert::OsuBeatmap, PLAYFIELD_BASE_SIZE}; use super::{convert::OsuBeatmap, PLAYFIELD_BASE_SIZE};
@@ -340,15 +340,3 @@ pub enum NestedSliderObjectKind {
Tail, Tail,
Tick, Tick,
} }
fn get_precision_adjusted_beat_len(slider_velocity_multiplier: f64, beat_len: f64) -> f64 {
let slider_velocity_as_beat_len = -100.0 / slider_velocity_multiplier;
let bpm_multiplier = if slider_velocity_as_beat_len < 0.0 {
f64::from(((-slider_velocity_as_beat_len) as f32).clamp(10.0, 10_000.0)) / 100.0
} else {
1.0
};
beat_len * bpm_multiplier
}
+1 -13
View File
@@ -9,7 +9,7 @@ use crate::{
hit_object::{HitObject, HitObjectKind, HoldNote, Slider, Spinner}, hit_object::{HitObject, HitObjectKind, HoldNote, Slider, Spinner},
mode::ConvertStatus, mode::ConvertStatus,
}, },
util::{float_ext::FloatExt, sort::TandemSorter}, util::{float_ext::FloatExt, get_precision_adjusted_beat_len, sort::TandemSorter},
}; };
use super::Taiko; use super::Taiko;
@@ -143,18 +143,6 @@ fn should_convert_slider_to_taiko_hits(map: &Beatmap, params: &mut SliderParams<
point.slider_velocity point.slider_velocity
}); });
fn get_precision_adjusted_beat_len(slider_velocity_multiplier: f64, beat_len: f64) -> f64 {
let slider_velocity_as_beat_len = -100.0 / slider_velocity_multiplier;
let bpm_multiplier = if slider_velocity_as_beat_len < 0.0 {
f64::from(((-slider_velocity_as_beat_len) as f32).clamp(10.0, 10_000.0)) / 100.0
} else {
1.0
};
beat_len * bpm_multiplier
}
let mut beat_len = get_precision_adjusted_beat_len(slider_velocity, timing_beat_len); let mut beat_len = get_precision_adjusted_beat_len(slider_velocity, timing_beat_len);
let slider_scoring_point_dist = f64::from(OSU_BASE_SCORING_DIST) let slider_scoring_point_dist = f64::from(OSU_BASE_SCORING_DIST)
+12
View File
@@ -7,3 +7,15 @@ pub mod sort;
pub mod special_functions; pub mod special_functions;
pub mod strains_vec; pub mod strains_vec;
pub mod sync; pub mod sync;
pub fn get_precision_adjusted_beat_len(slider_velocity_multiplier: f64, beat_len: f64) -> f64 {
let slider_velocity_as_beat_len = -100.0 / slider_velocity_multiplier;
let bpm_multiplier = if slider_velocity_as_beat_len < 0.0 {
f64::from(((-slider_velocity_as_beat_len) as f32).clamp(10.0, 10_000.0)) / 100.0
} else {
1.0
};
beat_len * bpm_multiplier
}