StyleInputToGameInput changed to take a vector to return values in to handle multiple inputs mapped to a single column. Associated adjustments to everything that uses it.
Player no longer drops holds in columns that have multiple inputs mapped to them if the wrong one is held.
Running out of stage tokens changed from assert to error.
I intend to make additional useful information available on judgments,
such as TapNoteType and TapNoteSubType( for hold judgments ).
I am submitting this part as a separate pull request because it is more
generally applicable to anything TapNote related.
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.