NoteField board was already an AutoActor, but code was requiring it to
be a derivative of Sprite. Allow any ActorClass to be used.
NoteField could already be accessed from below, using GetParent() on the
NoteField Board. For ease of allowing the board to be used for player
specific purposes, make notefield an actual child of Player, so the
Board can be accessed per player from the top down.
NoteDataUtil::GetTotalHoldTicks() was not counting the last tick of
holds which ended on the last row of the song. Extended the range to
include the last row.
NoteDataUtil::GetTotalHoldTicks() was counting number of rows held, when
it should only count 1 regardless of number( at least to mimic pump )
Player::CrossedRows() was assuming a constant tick rate over the crossed
rows, leading to potentially inaccurate tick counts.
Pump holds were counting "HoldNote_Held" due to capitalization in the
metrics. Fixed metrics and made "IsGame" function case insensitive.
Added an HNS type to handle holds which are never initialized due to
missed taps. This fixes a long standing issue with
iCurPossibleDancePoints and allows themes to decide how to handled this
case.
For backwards compatibility, broadcast the old StepP1/2 message in
addition to the new Step message. New themes, charts, etc. should of
course use the new message with parameters.
When there were tap notes on the same row as the start of a roll, autoplaying
the roll would result in the receptors on other tracks to glow. This was
because the Step() call would use the roll's head row for a parameter, which
included the other notes. This changes that parameter to -1 to automatically
use the current row in the song, which makes more sense anyway.
Fixes bug 241.
This required using the new Steps::GetTimingData function and the allowEmpty
parameter to TimingData::TidyUpData when appropriate, as well as clearing the
TimingData to remove step timing rather than coping the song timing over it.
Fixes some odd editor behavior when changing song timing, and is overall a
slightly less hacky way of doing things.
Mainly minor stuff. Time this gets brought in.
The other multi chain branches...
unsure of their fate. May need to be redone again
since not everyone is happy with its progress.