126 lines
6.7 KiB
C#
126 lines
6.7 KiB
C#
using Audio;
|
|
using System.Linq;
|
|
using static UIBasicSprite;
|
|
|
|
namespace Harmony.AudioObjectPatches
|
|
{
|
|
|
|
[HarmonyPatch(typeof(EnvironmentAudioManager))]
|
|
[HarmonyPatch("InitSounds")]
|
|
public class InitSoundsPatch
|
|
{
|
|
public static bool Prefix(EnvironmentAudioManager __instance)
|
|
{
|
|
AudioObject[] audioObjectArray = new AudioObject[0 + __instance.mixedBiomeSounds.Length + __instance.forestOnlyBiomeSounds.Length + __instance.snowOnlyBiomeSounds.Length + __instance.desertOnlyBiomeSounds.Length + __instance.wastelandOnlyBiomeSounds.Length + __instance.waterOnlyBiomeSounds.Length + __instance.burnt_forestOnlyBiomeSounds.Length];
|
|
int num1 = 0;
|
|
foreach (AudioObject mixedBiomeSound in __instance.mixedBiomeSounds)
|
|
{
|
|
//Log.Out("AudioObjectPatches-InitSounds mixedBiomeSound.name: " + mixedBiomeSound.name);
|
|
//Log.Out("AudioObjectPatches-InitSounds mixedBiomeSound.audioClips.Length: " + mixedBiomeSound.audioClips.Length);
|
|
audioObjectArray[num1++] = mixedBiomeSound;
|
|
}
|
|
foreach (AudioObject forestOnlyBiomeSound in __instance.forestOnlyBiomeSounds)
|
|
{
|
|
//Log.Out("AudioObjectPatches-InitSounds forestOnlyBiomeSound.name: " + forestOnlyBiomeSound.name);
|
|
//Log.Out("AudioObjectPatches-InitSounds forestOnlyBiomeSound.audioClips.Length: " + forestOnlyBiomeSound.audioClips.Length);
|
|
audioObjectArray[num1++] = forestOnlyBiomeSound;
|
|
}
|
|
foreach (AudioObject snowOnlyBiomeSound in __instance.snowOnlyBiomeSounds)
|
|
{
|
|
//Log.Out("AudioObjectPatches-InitSounds snowOnlyBiomeSound.name: " + snowOnlyBiomeSound.name);
|
|
//Log.Out("AudioObjectPatches-InitSounds snowOnlyBiomeSound.audioClips.Length: " + snowOnlyBiomeSound.audioClips.Length);
|
|
audioObjectArray[num1++] = snowOnlyBiomeSound;
|
|
}
|
|
foreach (AudioObject desertOnlyBiomeSound in __instance.desertOnlyBiomeSounds)
|
|
{
|
|
//Log.Out("AudioObjectPatches-InitSounds desertOnlyBiomeSound.name: " + desertOnlyBiomeSound.name);
|
|
//Log.Out("AudioObjectPatches-InitSounds desertOnlyBiomeSound.audioClips.Length: " + desertOnlyBiomeSound.audioClips.Length);
|
|
audioObjectArray[num1++] = desertOnlyBiomeSound;
|
|
}
|
|
foreach (AudioObject wastelandOnlyBiomeSound in __instance.wastelandOnlyBiomeSounds)
|
|
{
|
|
//Log.Out("AudioObjectPatches-InitSounds wastelandOnlyBiomeSound.name: " + wastelandOnlyBiomeSound.name);
|
|
//Log.Out("AudioObjectPatches-InitSounds wastelandOnlyBiomeSound.audioClips.Length: " + wastelandOnlyBiomeSound.audioClips.Length);
|
|
audioObjectArray[num1++] = wastelandOnlyBiomeSound;
|
|
}
|
|
foreach (AudioObject waterOnlyBiomeSound in __instance.waterOnlyBiomeSounds)
|
|
{
|
|
//Log.Out("AudioObjectPatches-InitSounds waterOnlyBiomeSound.name: " + waterOnlyBiomeSound.name);
|
|
//Log.Out("AudioObjectPatches-InitSounds waterOnlyBiomeSound.audioClips.Length: " + waterOnlyBiomeSound.audioClips.Length);
|
|
audioObjectArray[num1++] = waterOnlyBiomeSound;
|
|
}
|
|
foreach (AudioObject forestOnlyBiomeSound in __instance.burnt_forestOnlyBiomeSounds)
|
|
{
|
|
//Log.Out("AudioObjectPatches-InitSounds forestOnlyBiomeSound.name: " + forestOnlyBiomeSound.name);
|
|
//Log.Out("AudioObjectPatches-InitSounds forestOnlyBiomeSound.audioClips.Length: " + forestOnlyBiomeSound.audioClips.Length);
|
|
audioObjectArray[num1++] = forestOnlyBiomeSound;
|
|
}
|
|
int num2 = 0;
|
|
foreach (AudioObject _audioObject in audioObjectArray)
|
|
{
|
|
if (RebirthUtilities.ScenarioSkip() && _audioObject.name == "Birds_Loops")
|
|
continue;
|
|
|
|
//Log.Out("AudioObjectPatches-InitSounds _audioObject NAME: " + _audioObject.name);
|
|
//Log.Out("AudioObjectPatches-InitSounds validBiomes.Length: " + _audioObject.validBiomes.Length);
|
|
foreach (int validBiome in _audioObject.validBiomes)
|
|
{
|
|
__instance.audioBiomes[validBiome].Add(_audioObject);
|
|
if (_audioObject.trigger == AudioObject.Trigger.Day7Times || _audioObject.trigger == AudioObject.Trigger.TimeOfDay)
|
|
++num2;
|
|
}
|
|
_audioObject.Init();
|
|
}
|
|
__instance.fromBiomeLoops = __instance.audioBiomes[(int)__instance.fromBiome];
|
|
__instance.toBiomeLoops = __instance.audioBiomes[(int)__instance.toBiome];
|
|
__instance.soundsInitDone = true;
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
[HarmonyPatch(typeof(AudioObject))]
|
|
[HarmonyPatch("Init")]
|
|
public class InitPatch
|
|
{
|
|
public static bool Prefix(AudioObject __instance)
|
|
{
|
|
foreach (AudioClip audioClip in __instance.audioClips)
|
|
{
|
|
if (RebirthUtilities.ScenarioSkip() && (audioClip.name == "a_daybreak_oneshot" ||
|
|
audioClip.name == "a_nightfall_oneshot" ||
|
|
audioClip.name == "a_bloodmoon_oneshot")
|
|
)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if ((UnityEngine.Object)audioClip != (UnityEngine.Object)null)
|
|
{
|
|
AudioSource audioSource = UnityEngine.Object.Instantiate<AudioSource>(__instance.masterAudioSource);
|
|
if (__instance.playOrder == AudioObject.PlayOrder.ByValue)
|
|
{
|
|
audioSource.transform.parent = EnvironmentAudioManager.Instance.transform;
|
|
audioSource.loop = true;
|
|
audioSource.gameObject.SetActive(false);
|
|
}
|
|
else
|
|
audioSource.transform.parent = EnvironmentAudioManager.sourceSounds.transform;
|
|
audioSource.clip = audioClip;
|
|
audioSource.name = audioClip.name;
|
|
//Log.Out("AudioObjectPatches-Init audioSource.name: " + audioSource.name);
|
|
audioSource.volume = 0.0f;
|
|
audioSource.outputAudioMixerGroup = __instance.audioMixerGroup;
|
|
__instance.runtimeAudioSrcs.Add(audioSource);
|
|
}
|
|
}
|
|
__instance.audioClips = (AudioClip[])null;
|
|
if (__instance.trigger != AudioObject.Trigger.Random)
|
|
return false;
|
|
__instance.repeatTime = Time.time + Manager.random.RandomRange(__instance.repeatFreqRange.x, __instance.repeatFreqRange.y);
|
|
|
|
return false;
|
|
}
|
|
}
|
|
}
|