We introduced a new class, called "SongPosition", that replaces some instance variables in the GameState class. (GameState::m_Position).
Then, you also have it in PlayerState class which keeps track of the position based on their steps. (PlayerState::m_Position).
Fixing the build errors:
- GAMESTATE->m_fSomething should now be:
- GAMESTATE->m_Position.m_fSomething
- pPlayerState->m_Position.m_fSomething (or m_pPlayerState for some instance!)
+ sometimes there are delays/stops in high BPM sections,
they have to be handled inside a warp to be able to convert
it easily.
+ on the stopped / delayed rows with warps, judging become
enabled for that row.
Issues:
+ the bpm threshould is hardcoded (right now it's 400000.0).
someone change it please.
+ slight off-sync from conversion. haven't figured out how to
work around it yet.
+ TimingData: rewrote GetBeatAndBPSFromElapsedTimeNoOffset and GetBeatFromElapsedTimeNoOffset
to make it simpler and compute times correctly, by going through 3 arrays at the same time.
+ TimingData: added TimingData::IsWarpAtRow(int) just in case.
+ The skipping part is now handled by TimingData.
Current issues:
+ the rewritten function does not check if the vectors are sorted.
+ if you press the notes after the skip before the skip is reached, the notes in the warp
range got hit instead because m_iWarpBeginRow was not set before the warp is reached.
+ the notes after the skipped part are not judged if hit before the warp is reached and
the warp is big enough.
To be honest, I think these metrics should be placed
inside the Player class. It would make it more consistent
and easier to find in the docs. I may move them later.
This officially deprecates the time signature checkpoint metric.
However, it is still being kept in for those that desire the original
hackish behavior.