Skip to content

Commit ab9ad78

Browse files
authored
feat: use ordr preset render settings (#1076)
* feat: use ordr preset render settings * chore: cargo clippy
1 parent 42aeb98 commit ab9ad78

File tree

7 files changed

+67
-33
lines changed

7 files changed

+67
-33
lines changed

Cargo.lock

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bathbot-util/src/numbers.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ impl_with_comma!(@INT: i16 > 1032 -> i32, i32 > 1_000_000_002 -> i64, i64, isize
155155
impl_with_comma!(@UINT: u16 > 1065 -> u32, u32 > 1_000_000_004 -> u64, u64, usize);
156156

157157
pub fn last_multiple(per_page: usize, total: usize) -> usize {
158-
if per_page <= total && total % per_page == 0 {
158+
if per_page <= total && total.is_multiple_of(per_page) {
159159
total - per_page
160160
} else {
161161
total - total % per_page

bathbot/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ rosu-v2 = { workspace = true }
4848
rosu-pp-older = { git = "https://github.com/MaxOhn/rosu-pp-older.git", branch = "main" }
4949
# rosu-pp-older = { path = "../../rosu-pp-older" }
5050
# rosu-render = { git = "https://github.com/MaxOhn/rosu-render", branch = "main", default-features = false, features = ["rustls-webpki-roots"] }
51-
rosu-render = { version = "0.4.0", default-features = false, features = ["rustls-webpki-roots"] }
51+
rosu-render = { version = "0.5.1", default-features = false, features = ["rustls-webpki-roots"] }
5252
serde = { version = "1.0", features = ["derive"] }
5353
serde_json = { version = "1.0" }
5454
smallvec = { version = "1.0" }

bathbot/src/active/impls/render/import.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ impl IActiveMessage for SettingsImport {
253253
Ok(mut skin_list) => {
254254
let skin = skin_list.skins.swap_remove(0);
255255

256-
ReplaySettings::new_with_official_skin(options, skin)
256+
ReplaySettings::new_with_official_skin(options, skin, user)
257257
}
258258
Err(err) => {
259259
self.import_result = ImportResult::Err(
@@ -265,7 +265,7 @@ impl IActiveMessage for SettingsImport {
265265
}
266266
}
267267
RenderSkinOption::Custom { ref id } => match ordr.custom_skin_info(*id).await {
268-
Ok(info) => ReplaySettings::new_with_custom_skin(options, info, *id),
268+
Ok(info) => ReplaySettings::new_with_custom_skin(options, info, *id, user),
269269
Err(err) => {
270270
self.import_result = ImportResult::Err(
271271
Report::new(err).wrap_err("Failed to request custom skin"),

bathbot/src/commands/osu/render.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,14 @@ pub struct RenderScore {
7272
}
7373

7474
#[derive(CommandModel, CreateCommand)]
75-
#[command(name = "settings", desc = "Adjust your o!rdr render settings")]
75+
#[command(
76+
name = "settings",
77+
desc = "Adjust your o!rdr render settings",
78+
help = "Adjust your o!rdr render settings.\n\
79+
Note: You might want to configure your settings on the ordr website and use \
80+
that as preset. If a preset on your ordr account is available for your \
81+
linked discord account, it will always overwrite your settings here."
82+
)]
7683
pub enum RenderSettings {
7784
#[command(name = "modify")]
7885
Modify(RenderSettingsModify),
@@ -604,6 +611,8 @@ impl OngoingRender {
604611
progress = self.receivers.progress.recv() => {
605612
let now = Instant::now();
606613

614+
debug!("Got progress: {progress:?}");
615+
607616
if last_update + INTERVAL > now {
608617
continue;
609618
}
@@ -614,7 +623,6 @@ impl OngoingRender {
614623
return warn!("progress channel was closed");
615624
};
616625

617-
618626
self.status.set(RenderStatusInner::Rendering(progress.progress));
619627
let builder = self.status.as_message();
620628

@@ -825,7 +833,7 @@ async fn render_settings_default(command: &mut InteractionCommand) -> Result<()>
825833

826834
let owner = command.user_id()?;
827835
let replay_manager = Context::replay();
828-
let settings = ReplaySettings::default();
836+
let settings = ReplaySettings::new_default(owner);
829837

830838
if let Err(err) = replay_manager.set_settings(owner, &settings).await {
831839
let _ = command.error(GENERAL_ISSUE).await;

bathbot/src/manager/replay.rs

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ impl ReplayManager {
5959
.wrap_err("Failed to load settings")?;
6060

6161
match options {
62-
Some(options) => Ok(ReplaySettings::from(options)),
62+
Some(options) => Ok(ReplaySettings::from_db(options, user)),
6363
None => {
64-
let settings = ReplaySettings::default();
64+
let settings = ReplaySettings::new_default(user);
6565

6666
if let Err(err) = self.set_settings(user, &settings).await {
6767
warn!(?err);
@@ -105,7 +105,6 @@ impl ReplayError {
105105
pub const ALREADY_REQUESTED_TEXT: &str = "Failed to check whether replay was already requested";
106106
}
107107

108-
#[derive(Default)]
109108
pub struct ReplaySettings {
110109
options: RenderOptions,
111110
official_skin: ReplaySkin,
@@ -129,7 +128,24 @@ impl Default for ReplaySkin {
129128
}
130129

131130
impl ReplaySettings {
132-
pub fn new_with_official_skin(options: RenderOptions, skin: Skin) -> Self {
131+
pub fn new_default(discord_id: Id<UserMarker>) -> Self {
132+
Self {
133+
options: RenderOptions {
134+
discord_user_id: Some(discord_id.get()),
135+
..Default::default()
136+
},
137+
official_skin: Default::default(),
138+
custom_skin: Default::default(),
139+
}
140+
}
141+
142+
pub fn new_with_official_skin(
143+
mut options: RenderOptions,
144+
skin: Skin,
145+
discord_id: Id<UserMarker>,
146+
) -> Self {
147+
options.discord_user_id = Some(discord_id.get());
148+
133149
Self {
134150
options,
135151
official_skin: ReplaySkin {
@@ -140,7 +156,14 @@ impl ReplaySettings {
140156
}
141157
}
142158

143-
pub fn new_with_custom_skin(options: RenderOptions, skin: SkinInfo, id: u32) -> Self {
159+
pub fn new_with_custom_skin(
160+
mut options: RenderOptions,
161+
skin: SkinInfo,
162+
id: u32,
163+
discord_id: Id<UserMarker>,
164+
) -> Self {
165+
options.discord_user_id = Some(discord_id.get());
166+
144167
Self {
145168
options,
146169
official_skin: ReplaySkin::default(),
@@ -201,21 +224,8 @@ impl ReplaySettings {
201224

202225
(self.official_skin.display_name.as_ref(), custom)
203226
}
204-
}
205-
206-
pub struct CustomSkinName<'n> {
207-
name: &'n str,
208-
id: u32,
209-
}
210-
211-
impl Display for CustomSkinName<'_> {
212-
fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult {
213-
write!(f, "{} (ID {})", self.name, self.id)
214-
}
215-
}
216227

217-
impl From<DbRenderOptions> for ReplaySettings {
218-
fn from(options: DbRenderOptions) -> Self {
228+
fn from_db(options: DbRenderOptions, discord_id: Id<UserMarker>) -> Self {
219229
let settings = RenderOptions {
220230
resolution: RenderResolution::HD720,
221231
global_volume: options.global_volume as u8,
@@ -267,6 +277,7 @@ impl From<DbRenderOptions> for ReplaySettings {
267277
show_strain_graph: options.show_strain_graph,
268278
show_slider_breaks: options.show_slider_breaks,
269279
ignore_fail: options.ignore_fail,
280+
discord_user_id: Some(discord_id.get()),
270281
};
271282

272283
let official_skin = ReplaySkin {
@@ -292,6 +303,17 @@ impl From<DbRenderOptions> for ReplaySettings {
292303
}
293304
}
294305

306+
pub struct CustomSkinName<'n> {
307+
name: &'n str,
308+
id: u32,
309+
}
310+
311+
impl Display for CustomSkinName<'_> {
312+
fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult {
313+
write!(f, "{} (ID {})", self.name, self.id)
314+
}
315+
}
316+
295317
impl From<&ReplaySettings> for DbRenderOptions {
296318
fn from(settings: &ReplaySettings) -> Self {
297319
let ReplaySettings {

bathbot/src/tracking/ordr/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ impl Ordr {
8888
}
8989

9090
pub async fn subscribe_render_id(&self, render_id: u32) -> OrdrReceivers {
91+
debug!(render_id, "Subscribing");
92+
9193
let (done_tx, done_rx) = mpsc::channel(1);
9294
let (failed_tx, failed_rx) = mpsc::channel(1);
9395
let (progress_tx, progress_rx) = mpsc::channel(4);
@@ -110,6 +112,8 @@ impl Ordr {
110112
}
111113

112114
pub async fn unsubscribe_render_id(&self, render_id: u32) {
115+
debug!(render_id, "Unsubscribing");
116+
113117
self.senders.own(RenderId(render_id)).await.remove();
114118
}
115119
}

0 commit comments

Comments
 (0)