garcia / simfile

A modern simfile parsing & editing library for Python 3
MIT License
62 stars 7 forks source link

simfile.timing.engine: Incorporate FAKES tag into "hittable" logic #7

Open garcia opened 3 years ago

garcia commented 3 years ago

The SSC format includes a FAKES property (at both the simfile and chart level) that defines fake regions - beat ranges in which notes of all types are unhittable. This, together with warp segments, are the two reasons why a note might not be hittable, as observed in TimingData.h. (StepMania uses the term judgable here, but hittable appears to be used synonymously elsewhere in source code.)

Right now, TimingEngine only marks warp regions as unhittable. Fixing this cleanly will probably require adding a fakes attribute to TimingData. Currently, the attributes in TimingData are scoped to just those required for TimingEngine to do its job, under which rule this addition makes perfect sense. However, it does count as an expansion to the public API, which will incur a minor version bump.

Also of note: in the future, we may want to add all of the timing properties for which any chart-level data replaces the simfile-level data. This set of properties is documented in NotesLoaderSSC.cpp.

telperion commented 11 months ago

bump - ran into this with some ITL 2024 prep. not a blocker, wasn't hard to roll my own "is this note in a fake region" logic with BeatValues parsing