mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2026-01-29 17:38:16 +03:00
Fix resumemusic/musicfadein not working
It seems like they were unfinished. This commit makes them properly work. When a track is stopped with stopmusic() or musicfadeout(), resumemusic() will resume from where the track stopped. musicfadein() does the same but does it with a gradual fade instead of suddenly playing it at full volume. I changed several interfaces around for this. First, setting currentsong to -1 when music is stopped is handled in the hook callback that gets called by SDL_mixer whenever the music stops. Otherwise, it'd be problematic if currentsong was set to -1 when the song starts fading out instead of when the song actually ends. Also, music.play() has a few optional arguments now, to reduce the copying-and-pasting of music code. Lastly, we have to roll our own tracker of music length by using SDL_GetPerformanceCounter(), because there's no way to get the music position if a song fades out. (We could implicitly keep the music position if we abruptly stopped the song using Mix_PauseMusic(), and resume it using Mix_ResumeMusic(), but ignoring the fact that those two functions are also used on the unfocus-pause (which, as it turns out, is basically a non-issue because the unfocus-pause can use some other functions), there's no equivalent for fading out, i.e. there's no "fade out and pause when it fully fades out" function in SDL_mixer.) And then we have to account for the unfocus-pause in our manual tracker. Other than that, these commands are now fully functional.
This commit is contained in:
@@ -13,11 +13,13 @@ class musicclass
|
||||
public:
|
||||
void init();
|
||||
|
||||
void play(int t);
|
||||
void play(int t, const double position_sec = 0.0, const int fadein_ms = 3000);
|
||||
void resume(const int fadein_ms = 0);
|
||||
void haltdasmusik();
|
||||
void silencedasmusik();
|
||||
void fadeMusicVolumeIn(int ms);
|
||||
void fadeout();
|
||||
void fadein();
|
||||
void processmusicfadein();
|
||||
void processmusic();
|
||||
void niceplay(int t);
|
||||
@@ -53,6 +55,9 @@ public:
|
||||
bool usingmmmmmm;
|
||||
|
||||
binaryBlob musicReadBlob;
|
||||
|
||||
Uint64 songStart;
|
||||
Uint64 songEnd;
|
||||
};
|
||||
|
||||
extern musicclass music;
|
||||
|
||||
Reference in New Issue
Block a user