472 lines
23 KiB
C#
472 lines
23 KiB
C#
using System.Collections.Generic;
|
|
|
|
namespace Harmony.BackgroundMusicPatches
|
|
{
|
|
public class MenuMusic
|
|
{
|
|
public static AudioType MyMusicType = AudioType.OGGVORBIS;
|
|
public static List<int> musicLeft = new List<int>();
|
|
|
|
[HarmonyPatch(typeof(BackgroundMusicMono))]
|
|
[HarmonyPatch("Start")]
|
|
public class StartPatch
|
|
{
|
|
public static bool Prefix(BackgroundMusicMono __instance
|
|
)
|
|
{
|
|
AudioListener[] objectsOfType = UnityEngine.Object.FindObjectsOfType<AudioListener>();
|
|
for (int index = 0; index < objectsOfType.Length; ++index)
|
|
{
|
|
if (objectsOfType[index].enabled)
|
|
{
|
|
__instance.transform.position = objectsOfType[index].transform.position;
|
|
break;
|
|
}
|
|
}
|
|
AudioListener.volume = Mathf.Min(GamePrefs.GetFloat(EnumGamePrefs.OptionsOverallAudioVolumeLevel), 1f);
|
|
RebirthVariables.audioSource = __instance.gameObject.AddComponent<AudioSource>();
|
|
RebirthVariables.audioSource.volume = RebirthVariables.currentVolume = 0.01f;
|
|
RebirthVariables.audioSource.clip = GameManager.Instance.BackgroundMusicClip;
|
|
RebirthVariables.audioSource.loop = true;
|
|
RebirthVariables.audioSource.Play();
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
[HarmonyPatch(typeof(BackgroundMusicMono), "Update")]
|
|
public class Update
|
|
{
|
|
private static bool Prefix(BackgroundMusicMono __instance)
|
|
{
|
|
if (GameManager.Instance == null)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update RebirthVariables.audioSource.clip.name: " + RebirthVariables.audioSource.clip.name);
|
|
//Log.Out("BackgroundMusicPatches-Update RebirthVariables.audioSource.isPlaying: " + RebirthVariables.audioSource.isPlaying);
|
|
|
|
if (RebirthVariables.audioSource.clip.name == "menu_music_long_lp")
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 1");
|
|
string strMusicPath = "";
|
|
|
|
RebirthVariables.audioClip = new AudioClip[23];
|
|
|
|
for (int i = 1; i <= 23; i++)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 1a, i: " + i);
|
|
musicLeft.Add(i);
|
|
strMusicPath = "#@modfolder(zzz_REBIRTH__Utils):Resources/FR_Music.unity3d?Menu" + i;
|
|
RebirthVariables.audioClip[i - 1] = DataLoader.LoadAsset<AudioClip>(strMusicPath);
|
|
}
|
|
|
|
strMusicPath = "#@modfolder(zzz_REBIRTH__Utils):Resources/FR_Music.unity3d?Scratch";
|
|
|
|
AudioClip audioClip = DataLoader.LoadAsset<AudioClip>(strMusicPath);
|
|
|
|
RebirthVariables.audioSource.loop = false;
|
|
|
|
if (audioClip != null)
|
|
{
|
|
RebirthVariables.audioSource.Stop();
|
|
RebirthVariables.audioSource.clip = audioClip;
|
|
RebirthVariables.audioSource.PlayOneShot(audioClip);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
else if (RebirthVariables.audioSource.clip.name == "Scratch" && RebirthVariables.audioSource.isPlaying == false)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 2");
|
|
int num = UnityEngine.Random.Range(1, 10);
|
|
|
|
string strMusicPath = "#@modfolder(zzz_REBIRTH__Utils):Resources/FR_Music.unity3d?Rekt" + num;
|
|
|
|
AudioClip audioClip = DataLoader.LoadAsset<AudioClip>(strMusicPath);
|
|
|
|
RebirthVariables.audioSource.loop = false;
|
|
if (audioClip != null)
|
|
{
|
|
RebirthVariables.audioSource.clip = audioClip;
|
|
RebirthVariables.audioSource.PlayOneShot(audioClip);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
else if (RebirthVariables.audioSource.clip.name.Contains("Rekt") && RebirthVariables.audioSource.isPlaying == false && !RebirthVariables.audioClipLoaded)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 3a, musicLeft.Count: " + musicLeft.Count);
|
|
|
|
//RebirthVariables.audioClip = new AudioClip[23];
|
|
|
|
if (musicLeft.Count == 0)
|
|
{
|
|
for (int i = 1; i <= 23; i++)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 3a, i: " + i);
|
|
musicLeft.Add(i);
|
|
string strMusicPath = "#@modfolder(zzz_REBIRTH__Utils):Resources/FR_Music.unity3d?Menu" + i;
|
|
RebirthVariables.audioClip[i - 1] = DataLoader.LoadAsset<AudioClip>(strMusicPath);
|
|
}
|
|
}
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update 3b, musicLeft.Count: " + musicLeft.Count);
|
|
|
|
int num = UnityEngine.Random.Range(1, musicLeft.Count);
|
|
RebirthVariables.songIndex = musicLeft[num];
|
|
|
|
musicLeft.Remove(RebirthVariables.songIndex);
|
|
|
|
if (RebirthVariables.audioClip[RebirthVariables.songIndex - 1] != null)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 3c");
|
|
RebirthVariables.audioSource.loop = false;
|
|
RebirthVariables.secondsToFadeIn = 1f;
|
|
RebirthVariables.secondsToFadeOut = 10f;
|
|
RebirthVariables.audioSource.clip = RebirthVariables.audioClip[RebirthVariables.songIndex - 1];
|
|
RebirthVariables.controlOption = MusicControlOption.FadeIn;
|
|
RebirthVariables.audioSource.Play();
|
|
|
|
}
|
|
|
|
RebirthVariables.audioClipLoaded = true;
|
|
}
|
|
else if (RebirthVariables.audioSource.clip.name.Contains("Menu") && RebirthVariables.audioSource.volume > 0 && RebirthVariables.audioSource.isPlaying == false && RebirthVariables.musicMode == -1)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 4, musicLeft.Count: " + musicLeft.Count);
|
|
|
|
if (musicLeft.Count == 0)
|
|
{
|
|
for (int i = 1; i <= 23; i++)
|
|
{
|
|
musicLeft.Add(i);
|
|
}
|
|
}
|
|
|
|
int num = UnityEngine.Random.Range(0, musicLeft.Count - 1);
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update num: " + num);
|
|
|
|
RebirthVariables.songIndex = musicLeft[num];
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update RebirthVariables.songIndex: " + RebirthVariables.songIndex);
|
|
|
|
musicLeft.Remove(RebirthVariables.songIndex);
|
|
|
|
if (RebirthVariables.audioClip[RebirthVariables.songIndex - 1] != null)
|
|
{
|
|
RebirthVariables.audioSource.loop = false;
|
|
RebirthVariables.secondsToFadeIn = 1f;
|
|
RebirthVariables.secondsToFadeOut = 10f;
|
|
RebirthVariables.audioSource.clip = RebirthVariables.audioClip[RebirthVariables.songIndex - 1];
|
|
RebirthVariables.controlOption = MusicControlOption.FadeIn;
|
|
RebirthVariables.audioSource.Play();
|
|
}
|
|
}
|
|
else if (RebirthVariables.audioSource.clip.name.Contains("Menu") && RebirthVariables.audioSource.volume > 0 && RebirthVariables.audioSource.isPlaying == false && RebirthVariables.musicMode == 1)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 5, musicLeft.Count: " + musicLeft.Count);
|
|
EntityPlayerLocal primaryPlayer = GameManager.Instance.World.GetPrimaryPlayer();
|
|
|
|
if (primaryPlayer != null)
|
|
{
|
|
if (musicLeft.Count == 0)
|
|
{
|
|
for (int i = 1; i <= 23; i++)
|
|
{
|
|
ProgressionValue progressionValue = primaryPlayer.Progression.GetProgressionValue("FuriousRamsayAchievementCassette" + i);
|
|
|
|
if (progressionValue != null && progressionValue.Level > 0)
|
|
{
|
|
musicLeft.Add(i);
|
|
}
|
|
}
|
|
}
|
|
|
|
RebirthVariables.songIndex = -1;
|
|
|
|
if (musicLeft.Count > 0)
|
|
{
|
|
int num = UnityEngine.Random.Range(0, musicLeft.Count - 1);
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update num: " + num);
|
|
|
|
RebirthVariables.songIndex = musicLeft[num];
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update RebirthVariables.songIndex: " + RebirthVariables.songIndex);
|
|
|
|
musicLeft.Remove(RebirthVariables.songIndex);
|
|
|
|
if (RebirthVariables.audioClip[RebirthVariables.songIndex - 1] != null)
|
|
{
|
|
RebirthVariables.audioSource.loop = false;
|
|
RebirthVariables.secondsToFadeIn = 1f;
|
|
RebirthVariables.secondsToFadeOut = 10f;
|
|
RebirthVariables.audioSource.clip = RebirthVariables.audioClip[RebirthVariables.songIndex - 1];
|
|
RebirthVariables.controlOption = MusicControlOption.FadeIn;
|
|
RebirthVariables.audioSource.Play();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update RebirthVariables.musicMode: " + RebirthVariables.musicMode);
|
|
|
|
if (GameStats.GetInt(EnumGameStats.GameState) == 1 && !GameManager.Instance.IsPaused())
|
|
{
|
|
if (RebirthVariables.musicMode == 3 && RebirthVariables.audioSource.isPlaying)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 6");
|
|
RebirthVariables.audioSource.Stop();
|
|
RebirthVariables.musicMode = -1;
|
|
musicLeft.Clear();
|
|
}
|
|
else if (RebirthVariables.musicMode == 4 && RebirthVariables.audioSource.isPlaying)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 7, BEFORE RebirthVariables.musicVolume: " + RebirthVariables.musicVolume);
|
|
RebirthVariables.musicVolume += 0.02f;
|
|
if (RebirthVariables.musicVolume > 1f)
|
|
{
|
|
RebirthVariables.musicVolume = 1f;
|
|
}
|
|
//Log.Out("BackgroundMusicPatches-Update 7, AFTER RebirthVariables.musicVolume: " + RebirthVariables.musicVolume);
|
|
RebirthVariables.musicMode = 1;
|
|
}
|
|
else if (RebirthVariables.musicMode == 5 && RebirthVariables.audioSource.isPlaying)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 8, BEFORE RebirthVariables.musicVolume: " + RebirthVariables.musicVolume);
|
|
RebirthVariables.musicVolume -= 0.02f;
|
|
if (RebirthVariables.musicVolume < 0f)
|
|
{
|
|
RebirthVariables.musicVolume = 0f;
|
|
}
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update 8, AFTER RebirthVariables.musicVolume: " + RebirthVariables.musicVolume);
|
|
RebirthVariables.musicMode = 1;
|
|
}
|
|
else if (RebirthVariables.musicMode == 2 && RebirthVariables.audioSource.isPlaying)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 9");
|
|
|
|
RebirthVariables.audioSource.Stop();
|
|
|
|
EntityPlayerLocal primaryPlayer = GameManager.Instance.World.GetPrimaryPlayer();
|
|
|
|
if (primaryPlayer != null)
|
|
{
|
|
if (musicLeft.Count == 0)
|
|
{
|
|
for (int i = 1; i <= 23; i++)
|
|
{
|
|
ProgressionValue progressionValue = primaryPlayer.Progression.GetProgressionValue("FuriousRamsayAchievementCassette" + i);
|
|
|
|
if (progressionValue != null && progressionValue.Level > 0)
|
|
{
|
|
musicLeft.Add(i);
|
|
}
|
|
}
|
|
}
|
|
|
|
RebirthVariables.songIndex = -1;
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update musicLeft.Count: " + musicLeft.Count);
|
|
|
|
if (musicLeft.Count > 0)
|
|
{
|
|
/*for (int i = 0; i <= musicLeft.Count - 1; i++)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update BEFORE musicLeft[" + i + "]: " + musicLeft[i]);
|
|
}*/
|
|
|
|
int num = UnityEngine.Random.Range(0, musicLeft.Count - 1);
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update num: " + num);
|
|
|
|
RebirthVariables.songIndex = musicLeft[num];
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update RebirthVariables.songIndex: " + RebirthVariables.songIndex);
|
|
|
|
musicLeft.Remove(RebirthVariables.songIndex);
|
|
|
|
/*if (musicLeft.Count > 0)
|
|
{
|
|
for (int i = 0; i <= musicLeft.Count - 1; i++)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update AFTER musicLeft[" + i + "]: " + musicLeft[i]);
|
|
}
|
|
}*/
|
|
|
|
if (RebirthVariables.audioClip[RebirthVariables.songIndex - 1] != null)
|
|
{
|
|
RebirthVariables.audioSource.loop = false;
|
|
RebirthVariables.secondsToFadeIn = 1f;
|
|
RebirthVariables.secondsToFadeOut = 10f;
|
|
RebirthVariables.audioSource.clip = RebirthVariables.audioClip[RebirthVariables.songIndex - 1];
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update RebirthVariables.audioSource.clip.name: " + RebirthVariables.audioSource.clip.name);
|
|
RebirthVariables.controlOption = MusicControlOption.FadeIn;
|
|
RebirthVariables.audioSource.Play();
|
|
}
|
|
}
|
|
|
|
RebirthVariables.musicMode = 1;
|
|
}
|
|
}
|
|
else if (RebirthVariables.musicMode == 1 && !RebirthVariables.audioSource.isPlaying)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 10");
|
|
|
|
EntityPlayerLocal primaryPlayer = GameManager.Instance.World.GetPrimaryPlayer();
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update BEFORE musicLeft.Count: " + musicLeft.Count);
|
|
|
|
musicLeft.Clear();
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update AFTER musicLeft.Count: " + musicLeft.Count);
|
|
|
|
if (primaryPlayer != null)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 10a");
|
|
|
|
if (musicLeft.Count == 0)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 10b");
|
|
|
|
for (int i = 1; i <= 23; i++)
|
|
{
|
|
ProgressionValue progressionValue = primaryPlayer.Progression.GetProgressionValue("FuriousRamsayAchievementCassette" + i);
|
|
|
|
if (progressionValue != null && progressionValue.Level > 0)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 10c, i: " + i);
|
|
musicLeft.Add(i);
|
|
}
|
|
}
|
|
}
|
|
|
|
RebirthVariables.songIndex = -1;
|
|
|
|
if (musicLeft.Count > 0)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 10d, musicLeft.Count: " + musicLeft.Count);
|
|
|
|
int num = UnityEngine.Random.Range(0, musicLeft.Count - 1);
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update num: " + num);
|
|
|
|
RebirthVariables.songIndex = musicLeft[num];
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update RebirthVariables.songIndex: " + RebirthVariables.songIndex);
|
|
|
|
musicLeft.Remove(RebirthVariables.songIndex);
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update 6a, RebirthVariables.songIndex: " + RebirthVariables.songIndex);
|
|
|
|
if (RebirthVariables.audioClip[RebirthVariables.songIndex - 1] != null)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 6b, SONG FOUND");
|
|
RebirthVariables.audioSource.loop = false;
|
|
RebirthVariables.secondsToFadeIn = 1f;
|
|
RebirthVariables.secondsToFadeOut = 10f;
|
|
RebirthVariables.audioSource.clip = RebirthVariables.audioClip[RebirthVariables.songIndex - 1];
|
|
RebirthVariables.controlOption = MusicControlOption.FadeIn;
|
|
|
|
RebirthVariables.audioSource.Play();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (RebirthVariables.musicMode == 0 && RebirthVariables.audioSource.isPlaying)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 11");
|
|
RebirthVariables.secondsToFadeOut = 1f;
|
|
RebirthVariables.controlOption = MusicControlOption.FadeOut;
|
|
}
|
|
else
|
|
{
|
|
if (RebirthVariables.audioSource.isPlaying && RebirthVariables.musicMode == -1)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 12");
|
|
RebirthVariables.secondsToFadeOut = 10f;
|
|
RebirthVariables.controlOption = MusicControlOption.FadeOut;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (RebirthVariables.controlOption == MusicControlOption.FadeIn)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 13, RebirthVariables.currentVolume: " + RebirthVariables.currentVolume);
|
|
//Log.Out("BackgroundMusicPatches-Update 13, musicLeft: " + musicLeft.Count);
|
|
if (RebirthVariables.currentVolume < 1f)
|
|
{
|
|
RebirthVariables.currentVolume += Time.deltaTime / RebirthVariables.secondsToFadeIn;
|
|
}
|
|
}
|
|
else if (RebirthVariables.controlOption == MusicControlOption.FadeOut && RebirthVariables.currentVolume > 0f)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 14");
|
|
RebirthVariables.currentVolume -= Time.deltaTime / RebirthVariables.secondsToFadeOut;
|
|
}
|
|
RebirthVariables.currentVolume = Mathf.Clamp01(RebirthVariables.currentVolume);
|
|
|
|
float volume = Mathf.Clamp01(GamePrefs.GetFloat(EnumGamePrefs.OptionsMenuMusicVolumeLevel) * RebirthVariables.currentVolume);
|
|
|
|
//if (volume == 0f && RebirthVariables.musicMode == 1)
|
|
if (RebirthVariables.musicMode == 1)
|
|
{
|
|
volume = Mathf.Clamp01(RebirthVariables.musicVolume) * RebirthVariables.currentVolume;
|
|
}
|
|
|
|
//Log.Out("BackgroundMusicPatches-Update volume: " + volume);
|
|
|
|
RebirthVariables.audioSource.volume = volume; // Mathf.Clamp01(GamePrefs.GetFloat(EnumGamePrefs.OptionsMenuMusicVolumeLevel) * RebirthVariables.currentVolume);
|
|
if (RebirthVariables.audioSource.isPlaying && RebirthVariables.audioSource.volume <= 0f && RebirthVariables.musicMode != 1)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update STOP");
|
|
RebirthVariables.audioSource.Stop();
|
|
|
|
return false;
|
|
}
|
|
if (!RebirthVariables.audioSource.isPlaying && RebirthVariables.audioSource.volume > 0f)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 15, RebirthVariables.musicMode: " + RebirthVariables.musicMode);
|
|
if (RebirthVariables.musicMode == 1)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 15a");
|
|
if (RebirthVariables.songIndex > -1)
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 15b");
|
|
RebirthVariables.audioSource.Play();
|
|
}
|
|
else
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 15c");
|
|
RebirthVariables.musicMode = 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//Log.Out("BackgroundMusicPatches-Update 15d");
|
|
|
|
if (RebirthVariables.musicMode == 3)
|
|
{
|
|
RebirthVariables.musicMode = -1;
|
|
RebirthVariables.songIndex = -1;
|
|
musicLeft.Clear();
|
|
return false;
|
|
}
|
|
|
|
RebirthVariables.audioSource.Play();
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
private static List<int> musicLeft = new List<int>();
|
|
}
|
|
}
|
|
}
|