Don't reset entire musicclass when mounting and unmounting assets

musicclass::init() re-initializes every attribute of musicclass
unnecessarily, when initialization should be put in a constructor
instead. This is bad, because music.init() gets called whenever we enter
and exit a custom level that has assets.

Otherwise, this would result in a bug where music.usingmmmmmm would be
reset, causing you to revert to PPPPPP on the title screen whenever you
enter a level with MMMMMM selected and exit it.

This also causes a confusing desync between game.usingmmmmmm and
music.usingmmmmmm since the values of the two variables are now
different (these duplicate variables should probably be removed, too,
and a lot of other duplicate variables like these exist, too, which are
a real headache). Which means despite MMMMMM playing on the title
screen, exiting the game and re-launching it will play PPPPPP instead.
What's even more is that going to game options and switching to PPPPPP
will play PPPPPP, but afterwards launching and re-entering will play
MMMMMM. Again, having duplicate variables is very bad, and should
probably be fixed, but that's a separate patch.
This commit is contained in:
Misa
2020-11-12 15:55:58 -08:00
committed by Ethan Lee
parent f93ce4ea4a
commit 98ef7a8675
2 changed files with 22 additions and 18 deletions

View File

@@ -11,6 +11,7 @@
class musicclass
{
public:
musicclass();
void init();
void play(int t, const double position_sec = 0.0, const int fadein_ms = 3000);