Files
2026-03-04 10:03:45 +08:00

244 lines
4.8 KiB
C#

using UnityEngine;
namespace DarkTonic.MasterAudio
{
public static class PersistentAudioSettings
{
public const string SfxVolKey = "MA_sfxVolume";
public const string MusicVolKey = "MA_musicVolume";
public const string SfxMuteKey = "MA_sfxMute";
public const string MusicMuteKey = "MA_musicMute";
public const string BusVolKey = "MA_BusVolume_";
public const string GroupVolKey = "MA_GroupVolume_";
public const string BusKeysKey = "MA_BusKeys";
public const string GroupKeysKey = "MA_GroupsKeys";
public const string Separator = ";";
public static string BusesUpdatedKeys
{
get
{
if (!PlayerPrefs.HasKey("MA_BusKeys"))
{
PlayerPrefs.SetString("MA_BusKeys", ";");
}
return PlayerPrefs.GetString("MA_BusKeys");
}
set
{
PlayerPrefs.SetString("MA_BusKeys", value);
}
}
public static string GroupsUpdatedKeys
{
get
{
if (!PlayerPrefs.HasKey("MA_GroupsKeys"))
{
PlayerPrefs.SetString("MA_GroupsKeys", ";");
}
return PlayerPrefs.GetString("MA_GroupsKeys");
}
set
{
PlayerPrefs.SetString("MA_GroupsKeys", value);
}
}
public static bool? MixerMuted
{
get
{
if (!PlayerPrefs.HasKey("MA_sfxMute"))
{
return null;
}
return PlayerPrefs.GetInt("MA_sfxMute") != 0;
}
set
{
if (!value.HasValue)
{
PlayerPrefs.DeleteKey("MA_sfxMute");
return;
}
bool value2 = value.Value;
PlayerPrefs.SetInt("MA_sfxMute", value2 ? 1 : 0);
if (MasterAudio.SafeInstance != null)
{
MasterAudio.MixerMuted = value2;
}
}
}
public static float? MixerVolume
{
get
{
if (!PlayerPrefs.HasKey("MA_sfxVolume"))
{
return null;
}
return PlayerPrefs.GetFloat("MA_sfxVolume");
}
set
{
if (!value.HasValue)
{
PlayerPrefs.DeleteKey("MA_sfxVolume");
return;
}
float value2 = value.Value;
PlayerPrefs.SetFloat("MA_sfxVolume", value2);
if (MasterAudio.SafeInstance != null)
{
MasterAudio.MasterVolumeLevel = value2;
}
}
}
public static bool? MusicMuted
{
get
{
if (!PlayerPrefs.HasKey("MA_musicMute"))
{
return null;
}
return PlayerPrefs.GetInt("MA_musicMute") != 0;
}
set
{
if (!value.HasValue)
{
PlayerPrefs.DeleteKey("MA_musicMute");
return;
}
bool value2 = value.Value;
PlayerPrefs.SetInt("MA_musicMute", value2 ? 1 : 0);
if (MasterAudio.SafeInstance != null)
{
MasterAudio.PlaylistsMuted = value2;
}
}
}
public static float? MusicVolume
{
get
{
if (!PlayerPrefs.HasKey("MA_musicVolume"))
{
return null;
}
return PlayerPrefs.GetFloat("MA_musicVolume");
}
set
{
if (!value.HasValue)
{
PlayerPrefs.DeleteKey("MA_musicVolume");
return;
}
float value2 = value.Value;
PlayerPrefs.SetFloat("MA_musicVolume", value2);
if (MasterAudio.SafeInstance != null)
{
MasterAudio.PlaylistMasterVolume = value2;
}
}
}
public static void SetBusVolume(string busName, float vol)
{
PlayerPrefs.SetFloat(MakeBusKey(busName), vol);
if (!(MasterAudio.SafeInstance == null))
{
if (MasterAudio.GrabBusByName(busName) != null)
{
MasterAudio.SetBusVolumeByName(busName, vol);
}
if (!BusesUpdatedKeys.Contains(";" + busName + ";"))
{
BusesUpdatedKeys = BusesUpdatedKeys + busName + ";";
}
}
}
public static string MakeBusKey(string busName)
{
return "MA_BusVolume_" + busName;
}
public static float? GetBusVolume(string busName)
{
string key = MakeBusKey(busName);
if (!PlayerPrefs.HasKey(key))
{
return null;
}
return PlayerPrefs.GetFloat(key);
}
public static string GetGroupKey(string groupName)
{
return "MA_GroupVolume_" + groupName;
}
public static void SetGroupVolume(string grpName, float vol)
{
PlayerPrefs.SetFloat(GetGroupKey(grpName), vol);
if (!(MasterAudio.SafeInstance == null))
{
if (MasterAudio.GrabGroup(grpName, logIfMissing: false) != null)
{
MasterAudio.SetGroupVolume(grpName, vol);
}
if (!GroupsUpdatedKeys.Contains(";" + grpName + ";"))
{
GroupsUpdatedKeys = GroupsUpdatedKeys + grpName + ";";
}
}
}
public static float? GetGroupVolume(string grpName)
{
string groupKey = GetGroupKey(grpName);
if (!PlayerPrefs.HasKey(groupKey))
{
return null;
}
return PlayerPrefs.GetFloat(groupKey);
}
public static void RestoreMasterSettings()
{
if (MixerVolume.HasValue)
{
MasterAudio.MasterVolumeLevel = MixerVolume.Value;
}
if (MixerMuted.HasValue)
{
MasterAudio.MixerMuted = MixerMuted.Value;
}
if (MusicVolume.HasValue)
{
MasterAudio.PlaylistMasterVolume = MusicVolume.Value;
}
if (MusicMuted.HasValue)
{
MasterAudio.PlaylistsMuted = MusicMuted.Value;
}
}
}
}