Code/UI/SubPanels/SettingsPanel.razor.cs
using System;
using System.Linq;
using Sandbox;
using Sandbox.Audio;
using Sandbox.UI;
namespace VNBase.UI;
public partial class SettingsPanel
{
private bool IsInputPressed => Settings?.SettingsInputs.Any( x => x.Pressed ) ?? false;
private static Mixer MasterMixer => Mixer.Master;
private static Mixer[] Mixers => Mixer.Master.GetChildren();
private DropDown? _speedDropdown;
public override void Tick()
{
if ( IsInputPressed )
{
ToggleVisibility();
}
}
private bool IsDirty()
{
var masterVolume = MasterMixer.Volume;
if ( Settings is null )
{
return false;
}
var textSpeed = Settings.TextEffectSpeed;
var anyMixerVolumeNotOne = Mixers.Any( mixer => mixer.Volume != 1f );
return masterVolume != 1f || anyMixerVolumeNotOne || textSpeed != Settings.TextSpeed.Normal;
}
private void Reset()
{
MasterMixer.Volume = 1f;
foreach ( var mixer in Mixers )
{
mixer.Volume = 1f;
}
if ( Settings is null )
{
return;
}
Settings.TextEffectSpeed = Settings.TextSpeed.Normal;
if ( _speedDropdown.IsValid() )
{
_speedDropdown.Value = Enum.GetName( Settings.TextEffectSpeed );
}
}
private void OnFilterChanged()
{
if ( Settings is null )
{
return;
}
var stringValue = (string?)_speedDropdown?.Value;
if ( stringValue is not null )
{
Settings.TextEffectSpeed = Enum.Parse<Settings.TextSpeed>( stringValue );
}
}
protected override void OnAfterTreeRender( bool firstTime )
{
if ( !firstTime )
{
return;
}
if ( !_speedDropdown.IsValid() )
{
return;
}
if ( Settings is null )
{
return;
}
_speedDropdown.Value = Enum.GetName( Settings.TextEffectSpeed );
base.OnAfterTreeRender( firstTime );
}
protected override int BuildHash()
{
return HashCode.Combine( Player?.DialogueHistory.Count, Settings?.TextEffectSpeed );
}
}