members are loaded--they'll see resets, score finalization, etc. It
also results in smaller code, due to a g++ bug that causes constructors
to be emitted several times.
Remove m_HoldNote array entirely. Remove 2sAnd3s. Store hold note
durations in the hold head. hold_tail only still exists when InsertHoldTails
is used, to make SM parsing a little easier (may go away). Add helpers
for iterating over ranges while including or excluding adjacent and overlapping
hold notes. Range operations are now [start,end) instead of [start,end].
(probably more details coming to sm-dev soon)
This call is cleaner and simpler than DeviceToEdit, and it shouldn't
be less efficient to call it many times than calling DeviceToEdit once
(since DeviceToEdit loops over all keys anyway). Maybe DeviceToEdit
should be dropped.
Maybe we should stop calling note indexes "rows" and "indexes", and just
call them "beats"; if they're stored as an integer, they're in fixed-point. Things
like "note rows per second" are a lot less intuitive than just calling them "beats
per second".
It actually looks like almost all of NoteDataUtil can be done naturally
in fixed-point: instead of passing around floating point, converting it to
fixed point for NoteData indexing, and adding floating-point beat fractions,
just pass around fixed point everywhere, and convert beat fractions to
fixed-point (which probably happens at compile-time)
If TimingData, etc. does the same thing, things will be simpler ...
using them in general over beats: it's more precise (we can tell exactly
how it'll round, and we can compare them without ugly error-margin hacks),
and it's what we need to use them with NoteData.
Have gameplay objects hold a PlayerState pointer instead of a PlayerNumber and indexing back into GameState.
This will simplify off-screen players (e.g. CPU ghosts, network replicated human players, >2 players using one NoteField)
store attack info in TapNote
in the SMNoteData string, store the attack params inline (like with keysounds)
play keysounds when hit
still doesn't play keysounds on a miss
still doesn't play autoKeysounds