Hiviexd / MVTaikoChecks

A set of osu!taiko Mapset Verifier checks
3 stars 3 forks source link

Rewrite the UnrankableFinisherCheck and also add a TaikoUtils class #9

Closed hongaaronc closed 1 year ago

hongaaronc commented 1 year ago

Summary

Resolves #5

This PR fixes all the issues with the UnrankableFinishersCheck.

Approach

Added a utility class (TaikoUtils.cs) which has a bunch of easy methods for checking a note's relationship to a pattern:

These methods are implemented by following this logic:

  1. Look to the previous and next adjacent notes
  2. Get the spacing between previous and adjacent
  3. Lower spacing side = part of the same pattern (so beginning or end)
  4. Same spacing = middle of pattern

For the actual check, I've added several dictionaries to define the first snap divisor that counts as a violation in various cases, with a Problem severity version and a Warning severity version:

Testing

hongaaronc commented 1 year ago

Maybe we could add 1/3 Muzu as a warning. Probably wouldn't do problem tho, since I think 1/3 finisher might make sense for some swing or 6/8 songs.

hongaaronc commented 1 year ago

Not ranked but I could see 1/3 + finisher being used like how I did in Muzu here (6/8 song). This is very low BPM though and 1/3 is practically used like how 1/2 would normally be: https://osu.ppy.sh/beatmapsets/1856271

Btw... on the note of slower BPM songs, should https://github.com/Hiviexd/MVTaikoChecks/blob/cab8008e4ca065d356311b16a2345fe8ff10e5ef/Checks/Compose/UnrankableFinisherCheck.cs#L184 use timing.GetNormalizedMsPerBeat() instead of timing.msPerBeat - to add BPM scaling?

I wasn't sure but I guess thinking about it more, I think it should probably?

Hiviexd commented 1 year ago

probably a good idea to consider bpm scaling for this

hongaaronc commented 1 year ago

Ok added both the BPM scaling and 1/3 + finisher warning.