Add a option for randomized music

This commit is contained in:
2025-09-05 13:52:36 -07:00
parent 5eee7e69f1
commit 7f092dc977
4 changed files with 585 additions and 7 deletions

View File

@@ -520,6 +520,19 @@ public class BazookaManager : MonoBehaviour
return bool.Parse(saveFile["settings"]["hideSocials"].ToString());
}
public void SetSettingRandomMusic(bool value)
{
if (saveFile["settings"] == null) saveFile["settings"] = new JObject();
saveFile["settings"]["randomMusic"] = value;
}
public bool GetSettingRandomMusic()
{
if (saveFile["settings"] == null) return true;
if (saveFile["settings"]["randomMusic"] == null) return true;
return bool.Parse(saveFile["settings"]["randomMusic"].ToString());
}
public void SetSettingMusicVolume(float value)
{
if (saveFile["settings"] == null) saveFile["settings"] = new JObject();

View File

@@ -6,28 +6,35 @@ public class GameMusicHandler : MonoBehaviour
public AudioClip[] audioClips;
private AudioSource audioSource;
private int lastIndex = -1;
private int currentIndex = 0;
private bool isPaused = false;
void Awake()
void Start()
{
audioSource = GetComponent<AudioSource>();
PlayRandomClip();
PlayNextClip();
}
void Update()
{
if (!audioSource.isPlaying && !isPaused) PlayRandomClip();
if (!audioSource.isPlaying && !isPaused) PlayNextClip();
}
void PlayRandomClip()
void PlayNextClip()
{
if (audioClips.Length == 0) return;
int index;
do
if (BazookaManager.Instance.GetSettingRandomMusic())
{
index = Random.Range(0, audioClips.Length);
} while (audioClips.Length > 1 && index == lastIndex);
do index = Random.Range(0, audioClips.Length);
while (audioClips.Length > 1 && index == lastIndex);
}
else
{
index = currentIndex;
currentIndex = (currentIndex + 1) % audioClips.Length;
}
lastIndex = index;
audioSource.clip = audioClips[index];

View File

@@ -8,6 +8,7 @@ public class SettingsMenu : MonoBehaviour
public Toggle setting2toggle;
public Toggle setting3toggle;
public Toggle setting4toggle;
public Toggle setting5toggle;
public Slider musicSlider;
public Slider sfxSlider;
public ColorPanel bgColorPanel;
@@ -38,6 +39,7 @@ public class SettingsMenu : MonoBehaviour
setting2toggle.isOn = BazookaManager.Instance.GetSettingShowFPS() == true;
setting3toggle.isOn = BazookaManager.Instance.GetSettingVsync() == true;
setting4toggle.isOn = BazookaManager.Instance.GetSettingHideSocials() == true;
setting5toggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
}
else
{
@@ -45,6 +47,7 @@ public class SettingsMenu : MonoBehaviour
setting2toggle.isOn = BazookaManager.Instance.GetSettingShowFPS() == true;
setting3toggle.interactable = false;
setting4toggle.isOn = BazookaManager.Instance.GetSettingHideSocials() == true;
setting5toggle.isOn = BazookaManager.Instance.GetSettingRandomMusic() == true;
}
setting1toggle.onValueChanged.AddListener(value =>
{
@@ -63,6 +66,7 @@ public class SettingsMenu : MonoBehaviour
QualitySettings.vSyncCount = value ? 1 : -1;
});
setting4toggle.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingHideSocials(value));
setting5toggle.onValueChanged.AddListener(value => BazookaManager.Instance.SetSettingRandomMusic(value));
musicSlider.onValueChanged.AddListener(value =>
{
BazookaManager.Instance.SetSettingMusicVolume(value);