Other things are happening here: anchoring the hold note to the
top or bottom, and flipping the wavy texture upside down. These
have separate purposes:
Normal hold rendering anchored to the bottom, so the hold scrolls
up as it's held; if it was anchored at the top, then it would
stay in place and the bottom would disappear as it was held.
In reverse, we can optionally reverse this, so the hold scrolls
down as it's held, or not reverse it, causing the hold to be
eaten by the head as the head comes down.
Normal hold rendering displays the hold body right-side-up.
In reverse, we can optionally render the hold body upside-down.
If we're flipping the head and tail (usually, putting the
overlaid arrow on the bottom instead of the top), mirroring
the body may or may not be wanted.
Additionally, we can optionally reverse the head and tail
(not to be confused with the top and bottom caps) in reverse.
These have been done together, but that's confusing; it's a
single setting with several obscure effects. Split it up.
win with the note skins ~4 years ago, where the hold
note parts were all in one texture. Now, they're split
into several parts, and we're changing the texture for
each part, which is a bigger state change than changing
the glow mode. Simplify this a bit and push DrawHoldHeadTail
and DrawActor together..
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)
re-configured for each arrow/hold part. Cache each object, so we don't
waste memory with duplicate actors; multiplied by NOTE_COLOR_IMAGES
for each player, this adds up quite a bit.