Convert more conservatively with modified DT/HT -> unknown

This commit is contained in:
Natsu Kagami 2024-06-20 16:12:02 +02:00
parent 1441902560
commit 5cf74e425e
Signed by: nki
GPG key ID: 55A032EB38B49ADB

View file

@ -1,6 +1,9 @@
use rosu_v2::model::{ use rosu_v2::{
model::{
self as rosu, self as rosu,
mods::{GameModIntermode, GameModsIntermode}, mods::{GameModIntermode, GameModsIntermode},
},
prelude::Acronym,
}; };
use super::*; use super::*;
@ -330,112 +333,92 @@ impl From<rosu::mods::GameModsIntermode> for Mods {
impl From<rosu::mods::GameMods> for Mods { impl From<rosu::mods::GameMods> for Mods {
fn from(value: rosu::mods::GameMods) -> Self { fn from(value: rosu::mods::GameMods) -> Self {
let unknown = rosu::mods::GameModIntermode::Unknown(rosu::mods::UnknownMod::default());
value value
.iter() .iter()
.cloned() .cloned()
.filter_map(|m| match m { .map(|m| match m {
rosu::mods::GameMod::HalfTimeOsu(ht) rosu::mods::GameMod::HalfTimeOsu(ht)
if ht.speed_change.is_some_and(|v| v != 0.75) => if ht.speed_change.is_some_and(|v| v != 0.75) =>
{ {
None unknown
} }
rosu::mods::GameMod::DaycoreOsu(dc) rosu::mods::GameMod::DaycoreOsu(dc)
if dc.speed_change.is_some_and(|v| v != 0.75) => if dc.speed_change.is_some_and(|v| v != 0.75) =>
{ {
None unknown
}
rosu::mods::GameMod::DaycoreOsu(_) => {
Some(rosu::mods::GameMod::HalfTimeOsu(rosu::mods::HalfTimeOsu {
speed_change: None,
adjust_pitch: Some(true),
}))
} }
rosu::mods::GameMod::DaycoreOsu(_) => rosu::mods::GameModIntermode::HalfTime,
rosu::mods::GameMod::DoubleTimeOsu(dt) rosu::mods::GameMod::DoubleTimeOsu(dt)
if dt.speed_change.is_some_and(|v| v != 1.5) => if dt.speed_change.is_some_and(|v| v != 1.5) =>
{ {
None unknown
} }
rosu::mods::GameMod::NightcoreOsu(nc) rosu::mods::GameMod::NightcoreOsu(nc)
if nc.speed_change.is_some_and(|v| v != 1.5) => if nc.speed_change.is_some_and(|v| v != 1.5) =>
{ {
None unknown
} }
rosu::mods::GameMod::HalfTimeTaiko(ht) rosu::mods::GameMod::HalfTimeTaiko(ht)
if ht.speed_change.is_some_and(|v| v != 0.75) => if ht.speed_change.is_some_and(|v| v != 0.75) =>
{ {
None unknown
} }
rosu::mods::GameMod::DaycoreTaiko(dc) rosu::mods::GameMod::DaycoreTaiko(dc)
if dc.speed_change.is_some_and(|v| v != 0.75) => if dc.speed_change.is_some_and(|v| v != 0.75) =>
{ {
None unknown
} }
rosu::mods::GameMod::DaycoreTaiko(_) => Some(rosu::mods::GameMod::HalfTimeTaiko( rosu::mods::GameMod::DaycoreTaiko(_) => rosu::mods::GameModIntermode::HalfTime,
rosu::mods::HalfTimeTaiko {
speed_change: None,
adjust_pitch: Some(true),
},
)),
rosu::mods::GameMod::DoubleTimeTaiko(dt) rosu::mods::GameMod::DoubleTimeTaiko(dt)
if dt.speed_change.is_some_and(|v| v != 1.5) => if dt.speed_change.is_some_and(|v| v != 1.5) =>
{ {
None unknown
} }
rosu::mods::GameMod::NightcoreTaiko(nc) rosu::mods::GameMod::NightcoreTaiko(nc)
if nc.speed_change.is_some_and(|v| v != 1.5) => if nc.speed_change.is_some_and(|v| v != 1.5) =>
{ {
None unknown
} }
rosu::mods::GameMod::HalfTimeCatch(ht) rosu::mods::GameMod::HalfTimeCatch(ht)
if ht.speed_change.is_some_and(|v| v != 0.75) => if ht.speed_change.is_some_and(|v| v != 0.75) =>
{ {
None unknown
} }
rosu::mods::GameMod::DaycoreCatch(dc) rosu::mods::GameMod::DaycoreCatch(dc)
if dc.speed_change.is_some_and(|v| v != 0.75) => if dc.speed_change.is_some_and(|v| v != 0.75) =>
{ {
None unknown
} }
rosu::mods::GameMod::DaycoreCatch(_) => Some(rosu::mods::GameMod::HalfTimeCatch( rosu::mods::GameMod::DaycoreCatch(_) => rosu::mods::GameModIntermode::HalfTime,
rosu::mods::HalfTimeCatch {
speed_change: None,
adjust_pitch: Some(true),
},
)),
rosu::mods::GameMod::DoubleTimeCatch(dt) rosu::mods::GameMod::DoubleTimeCatch(dt)
if dt.speed_change.is_some_and(|v| v != 1.5) => if dt.speed_change.is_some_and(|v| v != 1.5) =>
{ {
None unknown
} }
rosu::mods::GameMod::NightcoreCatch(nc) rosu::mods::GameMod::NightcoreCatch(nc)
if nc.speed_change.is_some_and(|v| v != 1.5) => if nc.speed_change.is_some_and(|v| v != 1.5) =>
{ {
None unknown
} }
rosu::mods::GameMod::HalfTimeMania(ht) rosu::mods::GameMod::HalfTimeMania(ht)
if ht.speed_change.is_some_and(|v| v != 0.75) => if ht.speed_change.is_some_and(|v| v != 0.75) =>
{ {
None unknown
} }
rosu::mods::GameMod::DaycoreMania(dc) rosu::mods::GameMod::DaycoreMania(dc)
if dc.speed_change.is_some_and(|v| v != 0.75) => if dc.speed_change.is_some_and(|v| v != 0.75) =>
{ {
None unknown
} }
rosu::mods::GameMod::DaycoreMania(_) => Some(rosu::mods::GameMod::HalfTimeMania( rosu::mods::GameMod::DaycoreMania(_) => rosu::mods::GameModIntermode::HalfTime,
rosu::mods::HalfTimeMania {
speed_change: None,
adjust_pitch: Some(true),
},
)),
rosu::mods::GameMod::DoubleTimeMania(dt) rosu::mods::GameMod::DoubleTimeMania(dt)
if dt.speed_change.is_some_and(|v| v != 1.5) => if dt.speed_change.is_some_and(|v| v != 1.5) =>
{ {
None unknown
} }
_ => Some(m), _ => m.intermode(),
}) })
.map(|v| v.intermode())
.collect::<GameModsIntermode>() .collect::<GameModsIntermode>()
.into() .into()
} }