osu icon indicating copy to clipboard operation
osu copied to clipboard

Add option for `SongProgress` to use strain in difficulty graph

Open Givikap120 opened this issue 4 months ago • 0 comments

First step of adding Strain Graph - https://github.com/ppy/osu/discussions/30116

Question about structure: Maybe adding all those logic into SongProgress class is not good, and I should create GraphSongProgress that will be base for argon and triangles song progress classes

A little explanation for reviewers on what parts this PR consists of:

  • Changes to the difficulty calculator (75 line diff). This includes addition of per-section calculation. This calculation depends on ensuring correct bounds between first and last section (because in normal diffcalc bounds are cut-off). Also this requires filtering skills to only relevant ones.
  • Implementation of strain resampling (150 line diff). This features my own algorithms for upscaling and downscaling, to specifically address the need of preserving correct "peak" value.
  • Changes to SongProgressGraph (100 line diff). Type of value changed from int to float (for obvious reason). As well as Objects setter is changed with SetFromObjects method for more intuitive understanding what it does (aka not just setting some field).
  • Changes to the SongProgress (150 line diff). Calculation of strains and option to show them on graph.

Givikap120 avatar Oct 05 '24 21:10 Givikap120