MusicWheel::SelectSongOrCourse instead of the active one. The advantage
of this is that if, for example, a PreferredCourse is set, the player is playing
regular play (not course mode), and then switches to course mode via the
mode menu, the course will be selected correctly. (Previously, it'd end up
on the default course in that case instead.)
the music wheel. This way, we can re-set the preferred song at any time
and have it take effect when we get back to the wheel; previously, if
we'd already played a song, m_pCurSong would override it.
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.
Merge the sort menu into the mode menu.
GAMESTATE->m_SortOrder is now GAMESTATE->m_PreferredSortOrder.
Allow the mode menu to have non-mutually-exclusive items.
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)
changes, request all of its assets that we need be loaded. Once each
piece finishes, load it from cache. We still take a skip to decode graphics
(banners in particular), but not from disk seeks, which is an issue on hard
drives and fatal on CDs.
This also handles fading banners much more precisely: we fade to the
high res banner once the music wheel has settled. Before, it was approximate;
we'd often load the banner before we settled. It still skips, but it's much less
prominent to skip when the music wheel is completely settled, than to skip
just before it settles.
Some more work is necessary to resolve lock contention; currently, you'll
still see frequent skips off a CD (but not constant as before). I'm working
on that, but I'm not sure if I want to put that in before the release, since
it's caused some crashes that I havn't tracked down.
The actual background work is disabled, and may not be enabled for the
release. I'm committing this to get the basic API work ironed out. It still
gives perceptual skip improvements even without the background thread.