Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ordering of certain beatmap elements must be enforced #1933

Open
2 of 7 tasks
peppy opened this issue Jan 18, 2018 · 4 comments
Open
2 of 7 tasks

Ordering of certain beatmap elements must be enforced #1933

peppy opened this issue Jan 18, 2018 · 4 comments
Labels
area:beatmap-parsing .osu file format parsing priority:3 Nice to have, at some point type:code-quality

Comments

@peppy
Copy link
Member

peppy commented Jan 18, 2018

In order to ensure beatmaps are in a sane state, lists should be checked for correct ordering. Cases where this should be checked

  • HitObjects should be in chronological order.
  • Nested HitObjects should be in chronological order.
  • DrawableHitObjects should be in reverse-chronological order where required (every ruleset so far).
  • Nested DrawableHitObjects should be in reverse-chronological order where required (every ruleset so far).
  • Events should be in chronological order.
  • TimingPoints should be in chronological order.
  • Samples should always start with the leading sample (ie. a HitNormal should come before any/all additions)

Using SortedList should also be considered where possible as a secondary measure to ensure order at runtime (ie. if the editor is modifying said lists).

@peppy peppy added this to the Candidate Issues milestone Jan 18, 2018
@peppy peppy added area:beatmap-parsing .osu file format parsing type:code-quality labels Jan 18, 2018
@thomastanck
Copy link
Contributor

What about 2B maps where a slider tick could be ordered before a circle (in an earlier slider) but need to be clicked after the circle? Is that already being checked?

@smoogipoo smoogipoo changed the title Ordering should be enforced at point of parsing a beatmap Ordering of certain beatmap elements must be enforced Jan 18, 2018
@smoogipoo
Copy link
Contributor

That is already being checked. At least at a Playfield level, DrawableHitObjects are ordered by their start times. i.e. the earlier slider will handle input until it's received all judgements possible for it, before the next DrawableHitObject begins handling input

Within DrawableHitObjects (i.e. between NestedHitObjects), this isn't being done, which is checklist item #4.

@smoogipoo
Copy link
Contributor

smoogipoo commented Jan 18, 2018

In many cases (most/all), SortedList will be required, not just a consideration. For example, adding and removing HitObjects to a Beatmap should require no knowledge about the ordering of hitobjects, the same with storyboard events and samples.

At the moment, ordering for HitObjects is enforced only at a beatmap parsing level, which will not cover the editor.

@ticotaco72
Copy link
Contributor

what is the state of this one?

@smoogipoo smoogipoo modified the milestones: Candidate Issues, Backlog Jan 7, 2019
@peppy peppy added the priority:3 Nice to have, at some point label Feb 17, 2020
@peppy peppy removed this from the Backlog milestone Feb 17, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:beatmap-parsing .osu file format parsing priority:3 Nice to have, at some point type:code-quality
Projects
None yet
Development

No branches or pull requests

4 participants