InputScheme separates the generic, low-level engine data
from the Game*-specific high-level data. GameButtonType
is a high-level distinction; in fact, it's only needed
for custom GameButtons (eg. DANCE_BUTTON_*), since the
function of generic GameButtons (GAME_BUTTON_*) can simply
be identified by their value--that's why, for example, we
don't have GameButtonType for GAME_BUTTON_COIN.
static Game g_Games[NUM_GAMES] =
{
{ a ... },
{ b ... }
};
do
static Game g_Game_A =
{
a ...
};
static Game &g_Games[NUM_GAMES] =
{ &g_Game_A, &g_Game_B, &g_Game_C };
This allows much easier organizing data by game, and splitting large arrays
into a dynamically sized array instead of having large fixed-size arrays sized
for the largest one. The GAME_ array may be deprecated, and this may be done
for styles too.
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..