From 92b3c0b413c501afa9946361ebd4c873e76eae42 Mon Sep 17 00:00:00 2001 From: Misa Date: Fri, 2 Apr 2021 12:02:01 -0700 Subject: [PATCH] Factor fade amount calculation to separate function This makes it so to reuse this code, we don't have to copy-paste it. Additionally, I added a check for the milliseconds being 0, to avoid a division by zero. Logically and mathematically, if the fade amount is 0 milliseconds, then that means the fade should happen instantly - however, dividing by zero is undefined (both in math and in C/C++), so this check needs to be added. --- desktop_version/src/Music.cpp | 13 ++++++++++++- desktop_version/src/Music.h | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/desktop_version/src/Music.cpp b/desktop_version/src/Music.cpp index d7b6c52a..94306310 100644 --- a/desktop_version/src/Music.cpp +++ b/desktop_version/src/Music.cpp @@ -5,6 +5,7 @@ #include #include "BinaryBlob.h" +#include "Game.h" #include "Map.h" #include "UtilityClass.h" @@ -273,10 +274,20 @@ void musicclass::silencedasmusik(void) musicVolume = 0; } +void musicclass::setfadeamount(const int fade_ms) +{ + if (fade_ms == 0) + { + FadeVolAmountPerFrame = MIX_MAX_VOLUME; + return; + } + FadeVolAmountPerFrame = MIX_MAX_VOLUME / (fade_ms / game.get_timestep()); +} + void musicclass::fadeMusicVolumeIn(int ms) { m_doFadeInVol = true; - FadeVolAmountPerFrame = MIX_MAX_VOLUME / (ms / 33); + setfadeamount(ms); } void musicclass::fadeout(const bool quick_fade_ /*= true*/) diff --git a/desktop_version/src/Music.h b/desktop_version/src/Music.h index 78f4c612..70594a37 100644 --- a/desktop_version/src/Music.h +++ b/desktop_version/src/Music.h @@ -19,6 +19,7 @@ public: void resume(const int fadein_ms = 0); void haltdasmusik(void); void silencedasmusik(void); + void setfadeamount(const int fade_ms); void fadeMusicVolumeIn(int ms); void fadeout(const bool quick_fade_ = true); void fadein(void);