Fixed undefined behaviour when custom credits attributes aren't specified (#1078)

## Bug fixes

- Fixed undefined behaviour when custom credits attributes aren't
specified
This commit is contained in:
xen-42 2025-04-10 15:39:48 -04:00 committed by GitHub
commit 4c031f9df5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 12 additions and 7 deletions

View File

@ -165,7 +165,14 @@ namespace NewHorizons.Components
// Patch new music clip // Patch new music clip
var musicSource = Locator.FindObjectsOfType<OWAudioSource>().Where(x => x.name == "AudioSource").Single(); // AudioSource that plays the credits music is literally called "AudioSource", luckily it's the only one called that. Lazy OW devs do be lazy. var musicSource = Locator.FindObjectsOfType<OWAudioSource>().Where(x => x.name == "AudioSource").Single(); // AudioSource that plays the credits music is literally called "AudioSource", luckily it's the only one called that. Lazy OW devs do be lazy.
AudioUtilities.SetAudioClip(musicSource, gameOver.audio, mod); if (!string.IsNullOrEmpty(gameOver.audio)) // string.Empty is default value for "audio" in GameOverModule, means no audio is specified.
{
AudioUtilities.SetAudioClip(musicSource, gameOver.audio, mod); // Load audio if specified
}
else
{
musicSource.AssignAudioLibraryClip(AudioType.PLACEHOLDER); // Otherwise default custom credits are silent - AudioType.PLACEHOLDER is silence (apparently)
}
musicSource.loop = gameOver.audioLooping; musicSource.loop = gameOver.audioLooping;
musicSource._maxSourceVolume = gameOver.audioVolume; musicSource._maxSourceVolume = gameOver.audioVolume;

View File

@ -26,6 +26,7 @@ namespace NewHorizons.External.Modules
/// <summary> /// <summary>
/// The audio to use for the credits music. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list. /// The audio to use for the credits music. Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list.
/// Credits will be silent unless this attribute is specified.
/// Note: only applies when creditsType is set to "custom". /// Note: only applies when creditsType is set to "custom".
/// </summary> /// </summary>
public string audio; public string audio;
@ -34,22 +35,19 @@ namespace NewHorizons.External.Modules
/// The length of the fade in and out for the credits music. /// The length of the fade in and out for the credits music.
/// Note: only applies when creditsType is set to "custom". /// Note: only applies when creditsType is set to "custom".
/// </summary> /// </summary>
[DefaultValue(1f)] [DefaultValue(1f)] public float audioVolume = 1f;
public float audioVolume;
/// <summary> /// <summary>
/// Determines if the credits music should loop. /// Determines if the credits music should loop.
/// Note: only applies when creditsType is set to "custom". /// Note: only applies when creditsType is set to "custom".
/// </summary> /// </summary>
[DefaultValue(false)] [DefaultValue(false)] public bool audioLooping = false;
public bool audioLooping;
/// <summary> /// <summary>
/// Duration of the credits scroll in seconds. /// Duration of the credits scroll in seconds.
/// Note: only applies when creditsType is set to "custom". /// Note: only applies when creditsType is set to "custom".
/// </summary> /// </summary>
[DefaultValue(120f)] [DefaultValue(120f)] public float length = 120f;
public float length;
/// <summary> /// <summary>
/// The type of credits that will run after the game over message is shown /// The type of credits that will run after the game over message is shown